- Nginx的启动、停止与重启
#启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#停止
ps -ef|grep nginx
kill -QUIT 2072
#重启
进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可
- nginx内置的负载均衡策略
1.轮循(默认)
Nginx根据请求次数,将每个请求均匀分配到每台服务器
2.最少连接
将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。
3.IP Hash
绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。 - 轮询配置示例
http {
# ... 省略其它配置
upstream tomcats {
#服务地址一
server 192.168.19.10:8080;
#服务地址二
server 192.168.19.11:8081;
#服务地址三
server example.com:8080;
}
server {
listen 80;
location / {
#通过该地址分发请求
proxy_pass http://tomcats;
}
}
# ... 省略其它配置
}
- 权重配置示例
#默认weight=1即分发给每个服务
upstream tomcats {
#假设总次数为6次
server 192.168.19.10:8080 weight=2 max_fails=3 fail_timeout=15; # 2/6次
server 192.168.19.11:8081 weight=3 down; # 3/6次
server 192.168.19.12:8080 weight=1 backup; # 1/6次
#server 192.168.19.13:8080 max_conns=1000;
}
说明:
1.max_fails
默认为1。某台Server允许请求失败的次数,超过最大次数后,在fail_timeout时间内,新的请求将不会分配给这台机器。如果设置为0,Nginx会将这台Server置为永久无效状态,然后将请求发给定义了proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream, and memcached_next_upstream指令来处理这次错误的请求。
2.fail_timeout
默认为10秒。某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求分配给它
3.backup
备份机,所有服务器挂了之后才会生效
4.down
标识某一台server不可用。可能能通过某些参数动态的激活它吧,要不真没啥用。
5.max_conns
限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0,表示不限制。注意:1.5.9之后的版本才有这个配置
- IP Hash配置示例
upstream tomcats {
server 192.168.19.10:8080 fail_timeout=15s;
server 192.168.19.11:8080 fail_timeout=15s;
ip_hash;
}
- nginx 配置根据路径跳转到指定后端服务
server {
listen 8000;
server_name localhost;
#包含/api的请求进行跳转,并忽略/api
location /api {
rewrite ^/api/(.*)$ /$1 break;
#后端服务器访问地址
proxy_pass http://192.168.0.138:8080;
#后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 50;
#后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_send_timeout 10;
#可以理解为一次请求的时间(注意,如果是文件下载,则流返回后便不会再报超时即弹出开始下载后就不会再报超时)
proxy_read_timeout 20;
}
}
请求地址:http://192.168.19.10:8000/api/nginx/config/test1 实际服务地址:http://192.168.0.138:8080/nginx/config/test1
- naginx常用参数参考
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传