nginx中proxy_set_header Host $host的作用
nginx中proxy_set_header Host $host的作用
路由配置:
起初没有配置 proxy_set_header Host $host
等参数, 请求总是报 400(bad request).
server { listen 80; server_name localhost; access_log /app/logs/nginx/http/edi_proxy_access.log; error_log /app/logs/nginx/http/edi_proxy_error.log; location / { proxy_pass http://$host:8090$request_uri; proxy_set_header HOST $host; proxy_buffers 256 4k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_next_upstream error timeout invalid_header http_502; } }
$host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$request_uri, 请求的URI,带查询字符串;
proxy_next_upstream指令
语法: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 |http_504 |http_404 | off ...; 默认值: proxy_next_upstream error timeout; 上下文: http, server, location
error # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误。
timeout # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时时
invalid_header # 后端服务器返回空响应或者非法响应头
http_500 # 后端服务器返回的响应状态码为500
http_502 # 后端服务器返回的响应状态码为502
http_503 # 后端服务器返回的响应状态码为503
http_504 # 后端服务器返回的响应状态码为504
http_404 # 后端服务器返回的响应状态码为404
off # 停止将请求发送给下一台后端服务器
运用场景
1、proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404; //进入max_fails计数
当其中一台返回错误码404,500…等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率,多可运用于前台程序负载,设置proxy_next_upstream
proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;
2、proxy_next_upstream off
因为proxy_next_upstream 默认值: proxy_next_upstream error timeout;
场景:当访问A时,A返回error timeout时,访问会继续分配到下一台服务器处理,就等于一个请求分发到多台服务器,就可能出现多次处理的情况,
如果涉及到充值,就有可能充值多次的情况,这种情况下就要把proxy_next_upstream关掉
proxy_next_upstream off
我自己的配置是:
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
这些状态视为fail计数,有充值接口的则关掉 proxy_next_upstream off
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!