Nginx集群及代理的应用
目录
1 大概思路... 1
2 了解Nginx及文档资源... 1
3 Nginx命令模块及进程结构... 2
4 解读Nginx配置... 3
5 让“百度”成为自己的“搬运工”. 5
6 服务器负载均衡集群... 7
7 域名解析实现负载均衡... 8
8 总结... 10
1 大概思路
l 了解Nginx及文档资源
l Nginx命令模块及进程结构
l 解读Nginx配置
l 让“百度”成为自己的“搬运工”
l 服务器负载均衡集群
l 域名解析实现负载均衡
l 总结
2 了解Nginx及文档资源
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
中文文档官网:
中文文档官网上,拥有了一些示例:
安装
配置示例和方法
X-Sendfile (=> X-Accel-Redirect) in Nginx
Disable the errorlog entries caused by the HW-Loadbalancer
3 Nginx命令模块及进程结构
基本命令
|
命令 |
描述 |
|
nginx –s stop |
立即停止守护进程(使用TERM信号) |
|
nginx –s quit |
温和地停止守护进程(使用QUIT信号) |
|
nginx –s reopen |
重新打开日志文件 |
|
nginx –s reload |
重新载入配置文件 |
|
nginx -t |
测试配置文件 |
|
kill/killall nginx |
配置服务无法停止,可用该命令终止该进程 |
高级的配置,一般有5个文件
|
标准名称 |
描述 |
|
nginx.conf |
应用程序的基本配置文件 |
|
mime.types |
一个文件扩展列表文件,与MIME类型关联 |
|
fastcgi.conf |
与FastCGI相关的配置文件 |
|
proxy.conf |
与Proxy相关的配置文件 |
|
sites.conf |
配置Nginx提供的网站,最好每个域建文件 |
基本模块
|
名称 |
描述 |
|
核心模块(Core module) |
基本特征和指令,例如进程管理和安全 |
|
事件模块(Events module) |
让你在Nginx内部机制配置网络使用能力 |
|
配置模块(Configuration module) |
提供包含机制 |
启动Nginx,一个独一无二的进程存在于内存——master进程,如果该服务在系统启动时有init脚本启动,它会使用当前的用户和用户组来运行——通常为root/root,master进程本身不处理任何客户端的请求,它是用来产生进程——worker进程,这些worker进程在配置文件中指定的用户和用户组来运行,定义大量worker进程以及每个worker进程的最大连接数。

硬件选择
|
低流量的配置 |
标准配置 |
高流量配置 |
|
CPU:双核 RAM:2GB 请求:~1/s |
CPU:四核 RAM:4GB 请求:~50/s |
CPU:八核 RAM:12GB 请求:~1000/s |
|
推荐值 |
||
|
worker_processes 2; worker_rlimit_nofile 1024; worker_priority -5; worker_cpu_affinity 01 10; events{ multi_accept on; worker_connections 128; } |
worker_processes 4; worker_rlimit_nofile 8192; worker_priority 0; worker_cpu_affinity 0001 0010 0100 1000; events{ multi_accept off; worker_connections 1024; } |
worker_processes 8; worker_priority 0; events{ multi_accept off; worker_connections 8192; } |
4 解读Nginx配置
核心模块(Core module)指令
|
指令和使用环境 |
描述 |
|
master_process |
语法:on或off 若为on,Nginx将开启多个进程,一个主进程(即master进程)和worker进程;若为off,Nginx会以独一无二的进程来运行。该指令仅被用于测试。 |
|
worker_processes |
语法:数字 定义worker进程的数量,Nginx可将请求分到多个worker进程 |
|
error_log |
语法:error_log /file/path level 能够提供不同的错误日志级别:应用程序、HTPP服务、虚拟主机和虚拟主机目录 |
|
pid |
语法:文件路径 用于存放Nginx守护进程的pid文件路径。默认值为编译时配置的路径 |
事件模块(Event Module)指令
|
指令和使用环境 |
描述 |
|
worker_connections |
语法:数字 定义一个woker进程能够同时连接的数量 |
|
multi_accept |
语法:on或off 定义Nginx是否立刻从所有监听队列进入的连接 |
配置模块(Configuration module)指令(涉及的主要是HTTP核心模块,下面再补充)
Nginx.conf解读:
#user nobody;
#定义worker进程的数量,Nginx可将请求分到多个worker进程
worker_processes 1; #能够提供不同的错误日志级别:应用程序、HTPP服务、虚拟主机和虚拟主机目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #用于存放Nginx守护进程的pid文件路径。默认值为编译时配置的路径
#pid logs/nginx.pid; #定义一个woker进程能够同时连接的数量
events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Nginx以上面配置为基础,提供Web服务
l 通过80监听tcp套接字
l 访问地址http://localhost/
l 主页为index.html
在windows的cmd下,进入nginx目录,输入:
D:\DTLDownLoads\nginx-1.10.2>start nginx D:\DTLDownLoads\nginx-1.10.2>nginx -t
nginx: the configuration file D:\DTLDownLoads\nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file D:\DTLDownLoads\nginx-1.10.2/conf/nginx.conf test is successful D:\DTLDownLoads\nginx-1.10.2>
运行效果如下:

5 让“百度”成为自己的“搬运工”
如何使用Nginx代理,使“百度”成为搬运工,主要设置server_name和proxy_pass属性。这里涉及了配置模块,主要是HTTP核心模块。
HTTP核心模块包含HTTP服务器所有基本的区段(block)、指令和变量。主要有http,server和location这三个主要的区段结构。
l http 该区段嵌入配置文件的根部。
l server 这个区段允许你声明一个站点,能够设定网站(通过主机名)。这样通过Nginx实现公认的服务器。该区段只能用在http区段。
l location 定义一组设置,应用于网站的一个特定位置。该区段能够用于server区段,也能嵌套在其它location中。
|
指令和使用环境 |
描述 |
|
server_name |
语法:server_name hostname1[hostname2…] 在server区段定义一个或者多个主机名 |
|
sendfile |
语法:on或off Nginx将使用sendfile内核来调用处理文件传递。 |
|
root |
语法:目录路径 定义文档根目录 |
|
keepalive_timeout |
语法:keepalive_timeout time1[time2...] keep-alive能够使用客户端服务器的连接在一定时间内持续有效 |
Nginx.conf配置如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost zhyongfeng;
location / {
proxy_pass https://www.baidu.com;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
运行效果:


6 服务器负载均衡集群
不同主机端口,通过localhost:80端口进行负载均衡集群访问,使用localhost对WEB API配置如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; upstream zhyongfeng.com {
#可进行down测试;
server 10.92.202.56:5600;
server 10.92.202.57:5700;
server 10.92.202.58:5800;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://zhyongfeng.com;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
运行CMD:
D:\DTLDownLoads\nginx-1.10.2>start nginx D:\DTLDownLoads\nginx-1.10.2>nginx -s reload
访问:http://localhost/,运行结果:



7 域名解析实现负载均衡
不同主机端口,通过自主义域名zhyongfeng.com:80端口进行负载均衡集群访问,则访问C:\Windows\System32\drivers\etc\hosts,添加下列“本机IP 自定义的域名”:
10.93.85.66 zhyongfeng.com
使用zhyongfeng.com对WEB API配置如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; upstream zhyongfeng.com {
server 10.92.202.56:5600;
server 10.92.202.57:5700;
server 10.92.202.58:5800;
}
server {
listen 80;
server_name zhyongfeng.com;
location / {
proxy_pass http://zhyongfeng.com;
}
}
}
运行CMD,重新reload加载配置,停止后重新启动:
D:\DTLDownLoads\nginx-1.10.2>nginx -s reload D:\DTLDownLoads\nginx-1.10.2>nginx -s stop D:\DTLDownLoads\nginx-1.10.2>start nginx
访问:http://zhyongfeng.com/,http://localhost/,http://10.93.85.66/的运行结果:



8 总结
Nginx可以使用Rewrite模块建立高级重写规则,可以和PHP、Python结合,也可以替换Apache,或者作用于现有HTTP服务器前端,能够轻松建立虚拟主机配置,既能反向代理又可以是电子邮件(IMAP/POP3)代理服务器,功能强大,可以深入学习。
Windows的Nginx资源下载:
http://download.csdn.net/download/ruby_matlab/10117702
PDF下载:
Nginx集群及代理的应用的更多相关文章
- 基于Windows 配置 nginx 集群 & 反向代理
1.下载 nginx 下载页面 : http://nginx.org/en/download.html 具体文件: http://nginx.org/download/nginx-1.7.0.zip ...
- Nginx 集群 反向代理多个服务器
准备多个服务器,使用 nginx 先做好代理(我这里只有一台服务器,就拷贝两个 tomcat 了,端口分别设置为 8081 和 8082) 1,复制 tomcat cp -r apache-tomca ...
- 扎实基础之从零开始-Nginx集群分布式.NET应用
1 扎实基础之快速学习Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少 ...
- Nginx集群之WCF分布式局域网应用
目录 1 大概思路... 1 2 Nginx集群WCF分布式局域网结构图... 1 3 关于WCF的BasicHttpBinding. 1 4 编写WC ...
- Nginx集群之WCF分布式身份验证(支持Soap)
目录 1 大概思路... 1 2 Nginx集群之WCF分布式身份验证... 1 3 BasicHttpBinding.ws2007HttpBinding. 2 4 ...
- nginx集群配置
一.nginx集群目标 以nginx作为代理服务器,分别在两台部署web站点的机器上面轮询访问. 3台机器IP地址分别为: 1)192.168.189.133 (nginx代理服务器) 2)192 ...
- nginx 集群介绍
nginx 集群介绍 完成一次请求的步骤 1)用户发起请求 2)服务器接受请求 3)服务器处理请求(压力最大) 4)服务器响应请求 缺点:单点故障 单台服务器资源有限 单台服务器处理耗时长 ·1)部署 ...
- NetCore在Centos7上部署和Nginx集群部署访问
NetCore在Linux上部署 工具:WMWare虚拟机,Wmware12,CentOS7ISO镜像,VS2017 1.安装虚拟机,过程略,网上一搜一大把 2.用VS2017建一个NetCore的W ...
- Nginx集群(负载均衡)
一.集群介绍 1.传统web访问模型 (1)传统web访问模型完成一次请求的步骤 1)用户发起请求 2)服务器接受请求 3)服务器处理请求(压力最大) 4)服务器响应请求 (2)传统模型缺点 单点故障 ...
随机推荐
- ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证
随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的 ...
- 使用邮件激活授权/ LightningChart license
在无网络连接的情况下,可以采用邮件的方式激活授权. 先打开License Manager,然后选 Activate/Deactivate via email, 如下图所示: 此邮件将自动发送到 lic ...
- ROC和AUC的区别
ROC是一个曲线,AUC是曲线下面的面积值. ROC曲线是FPR和TPR的点连成的线. 可以从上面的图看到,横轴是FPR, 纵轴是TPR (TPR = TP / (TP + FN):FPR = F ...
- 4、libgdx应用框架
(原文:http://www.libgdx.cn/topic/29/4-libgdx%E5%BA%94%E7%94%A8%E6%A1%86%E6%9E%B6) 模块 作为核心.libgdx提供了六个接 ...
- JSP具体篇——response对象
response对象 response对象用于响应client请求,向客户输出信息. 他封装了JSP产生的响应,并发送到client以响应client请求. 1.重定向网页 使用response对象的 ...
- 第五章——定时器Timer序言
定时器很重要. 上家公司有用的,是用来做定期数据同步的. 以前老同学有用到,曾经就定时器讨论过一次,还给过一次他我关于spring-task的总结. 但是并没有意识到定时器与多线程的关系,或者说,上一 ...
- 微信小程序豆瓣电影项目的改造过程经验分享
在学习微信小程序开发过程中,一部分的难点是前端逻辑的处理,也就是对前端JS的代码编辑:一部分的难点是前端界面的设计展示:本篇随笔基于一个豆瓣电影接口的小程序开源项目进行重新调整,把其中遇到的相关难点和 ...
- ms sql一些技巧
1.SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 新表 FROM 旧表 (将旧表的结构和数据都复制到新表,不用事先创建新表) SELECT * INTO 新表 FROM 旧表 ...
- springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置
一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库 ...
- Linux下查看Go语言软件运行情况
在Linux下,使用"jps"可以查看用Java语言写的软件的运行情况,如果要查看GO语言写的软件的运行情况,可以使用"gops",但这不是系统自带的,需要进行 ...