• 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服务器传