修改loadbalance.conf,新增 location / 的配置,注意注释掉 include /home/wwwroot/nginx_rewrite.conf此句(其余配置不用变动),不然会跟location /的配置冲突
listen 80 ; server_name lb.lziang.com; location / { proxy_pass http://tim-server; proxy_redirect default; } index index.php index.html index.htm; root /home/wwwroot/lb; #include /home/wwwroot/nginx_rewrite.conf;
修改loadbalance.conf,在service的同级新增以下, 注意tim-server是上面的proxy_pass中起的名称,可随便起
upstream tim-server { server lb.lziang.com:10001 weight=1; server lb.lziang.com:10002 weight=2; }
再次修改loadbalance.conf,按照平时的设置10001端口即可,注意需要打开刚才注释掉的include /home/wwwroot/nginx_rewrite.conf此句
server { listen 10001 ; server_name lb.lziang.com; index index.php index.html index.htm; root /home/wwwroot/lb; include /home/wwwroot/nginx_rewrite.conf; #error_page 404 /404.html; location ~ [^/]\.php(/|$) { # comment try_files $uri =404; to enable pathinfo try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #include pathinfo.conf; } location /nginx_status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } access_log /home/wwwlogs/access.log; }
重启nginx,需要打开外网的10001和10002端口,大功告成
另外,可以关注默认的max_fails=1 fail_timeout=10s参数,指10秒内发生1次错误,则把负载均衡的服务器剔除掉。可以更改为以下
upstream tim-server { server lb.lziang.com:10001 max_fails=2 fail_timeout=10s weight=1; server lb.lziang.com:10002 max_fails=2 fail_timeout=10s weight=2; }
另外,可以关注 location 下的(不是upstream下的)proxy_connect_timeout ,默认未60s,表示60秒负载均衡服务器没返回,则自动发送到另一台负载均衡服务器。可以更改为1秒(注意1s中的s是否可以省略 ? 未测试不得而知)
proxy_connect_timeout 1s; proxy_read_timeout 1s proxy_send_timeout 1s;