一、Nginx配置代理,是指向到另外一个服务器,但是URL地址不变。
server {
listen 8080;
server_name localhost;
location /appcenter-main {
#代理地址
proxy_pass http://localhost:8081/appcenter-main;
#代理连接时间
proxy_connect_timeout 2;
#代理读取时间
proxy_read_timeout 3;
#代理发送时间
proxy_send_timeout 15;
}
}
二、Nginx配置页面跳转,是指向到另外一个服务器,但是URL地址也跟着变化。
server {
listen 8080;
server_name localhost;
location /appcenter-main {
#proxy_next_upstream实现容灾和重复处理问题,
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#不改变请求头的信息
proxy_set_header Host $host;
#捕获客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#代理地址
proxy_pass http://localhost:8081/appcenter-main;
#缓存时间1天
expires 1d;
#地址重定向
rewrite ^/(.*)$ http://localhost:8081/appcenter-main permanent;
}
}
proxy_next_upstream 参数如下:
error 意思是和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,将请求发送给下一台后端服务器
timeout 意思是和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,将请求发送给下一台后端服务器
invalid_header 意思是后端服务器返回空响应或者非法响应头,将请求发送给下一台后端服务器
http_500 意思是后端服务器返回的响应状态码为500,将请求发送给下一台后端服务器
http_502 意思是后端服务器返回的响应状态码为502,将请求发送给下一台后端服务器
http_503 意思是后端服务器返回的响应状态码为503,将请求发送给下一台后端服务器
http_504 意思是后端服务器返回的响应状态码为504,将请求发送给下一台后端服务器
http_404 意思是后端服务器返回的响应状态码为404,将请求发送给下一台后端服务器
off 意思是停止将请求发送给下一台后端服务器
注:
出现如下场景就需要把proxy_next_upstream这个设置为 proxy_next_upstream off。
业务场景:当访问充值服务时,充值服务返回error timeout时,访问会继续分配到下一台服务器处理,就等于一个请求分发到多台服务器,就可能出现多次处理的情况,就有可能充值多次的情况,这种情况下就要把proxy_next_upstream关掉