Nginx Web默认发布静态页面,也可以均衡后端动态网站。
用户发起HTTP请求,如请求静态页面,Nginx直接处理返回;如请求动态页面,Nginx收到请求后会进行判断,转到后端服务器去处理。
Nginx实现负载均衡需要基于upstream模块,同时需要设置location proxy_pass转发指令实现。
Nginx应用负载均衡集群配置如下:
sn_test为负载均衡模块名称,必须与vhosts.conf或nginx.conf虚拟主机的proxy_pass段保持一致,否则不能将请求转发至后端的服务器
weight表示配置权重
max_fails表示nginx与后端服务器连接最大失败次数
fail_timeout表示nginx与后端服务器连接超时时间
在fail_timeout内检查max_fails次数
#配置负载均衡 upstream sn_test { url_hash; server 192.168.41.129:8080 weight=1 max_fails=2 fail_timeout=15s; server 192.168.41.130:8081 weight=1 max_fails=2 fail_timeout=15s; } #虚拟主机配置 server { #侦听80端口 listen 80; #定义使用www.scott.com访问 server_name www.scott.com; #设定本虚拟主机的访问日志 access_log logs/access.log main; root /data/webapps/www; #定义服务器的默认网站根目录位置 index index.php index.html index.htm; #定义首页索引文件的名称 #默认请求 location ~ /{ root /data/webapps/www; #定义服务器的默认网站根目录位置 index index.php index.html index.htm; #定义首页索引文件的名称 #以下是一些反向代理的配置. proxy_next_upstream http_502 http_504 error timeout invalid_header; #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。 proxy_redirect off; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #web服务器端获得用户的真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-jsession-id$cookie_JSESSIONID; proxy_set_header X-utsz-id $cookie___utsz; proxy_pass http://sn_test; #请求转向后端定义的均衡模块 }# 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。 location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /data/webapps/www; #expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力,在浏览器保存该类型文件的天数。 expires 3d; } #PHP脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ \.php$ { root /root; FastCGI_pass 127.0.0.1:9000; FastCGI_index index.php; FastCGI_param SCRIPT_FILENAME /data/webapps/www$FastCGI_script_name; include FastCGI_params; } #设定查看Nginx状态的地址及访问控制 location /NginxStatus { stub_status on; access_log on; allow 192.168.134.0/24; allow 192.168.138.0/24; deny all; } } } |