目录
Nginx负载均衡
七层服务使用的是http的指令块,四层服务则使用stream指令块,http和stream指令块是同级的
如果proxy_pass指令是用URI指定的,那么当请求被传递到服务器时,与位置匹配的规范化请求URI部分将被指令中指定的URI替换
# 例:用户请求"IP/name/"会被转到"127.0.0.1/remote/"
location /name/ {
proxy_pass http://127.0.0.1/remote/;
}
upstream配置
七层均衡
nginx3配置(192.168.113.145)
错误的连接由proxy_next_upstream, fastcgi_next_upstream等指令决定,且默认情况下,后端某台
服务器出现故障了,nginx会自动将请求再次转发给其他正常的服务器(因为默认
proxy_next_upstream error timeout)。
所以即使我们没有配这个参数,nginx也可以帮我们处理error和timeout的相应,但是没法处理404等报
错。
为了看清楚本质,可以先将proxy_next_upstream设置为off,也就是不将失败的请求转发给其他正常
服务器,这样我们可以看到请求失败的结果。
upstream web {
#通过这个指令,可以处理当后端服务返回404等报错时,直接将请求转发给其他服务器,而不是把报错信息返回客户端。
server 192.168.113.146weight=1 max_fails=3 fail_timeout=9s;
server 192.168.113.147 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web;
# 通过这个指令,可以处理当后端服务返回404等报错时,直接将请求转发给其他服务器,而不是把报错信息返回客户端。
# proxy_next_upstream error http_404 http_502;
proxy_next_upstream off;
# 如果不加该参数,那么在代理时,传入后端的HOST信息就是IP,那么会导致在访问时产生问题
# 设置或修改代理到后端请求头的内容
proxy_set_header Host $host;
# 通过该参数记录真实客户端地址(该变量值有两个,"$proxy_add_x_forwarded_for"记录了多个IP,"$remote_addr"只记录一个IP)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
# 代理服务器与后端节点建立链接的超时时间
proxy_connect_timeout 60;
# 代理服务器读取后端响应的超时时间
proxy_read_timeout 60;
# 代理服务器发送请求给后端节点的超时时间
proxy_send_timeout 60;
}
}
# 测试
# 设置的超时时间为9


1730

被折叠的 条评论
为什么被折叠?



