Nginx 代理常见问题汇总
代理后端服务-上传文件
代理配置
location ^~ /out/dev/ {
proxy_pass https://xxxx:443/;
proxy_set_header Host $Host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
# 代理缓冲区设置
proxy_request_buffering off; # 对大文件上传很重要
proxy_buffering off;
#proxy_ssl_verify off;
proxy_ssl_server_name on;
}
现象
curl -X POST "http://xxxx:443/out/xxx" -F "file=@/tmp/percona-xtrabackup.zip"
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
hr><center>nginx</center>
</body>
解决办法
# server
client_max_body_size 100M;
underscores_in_headers on;
# location
# 代理缓冲区设置
proxy_request_buffering off; # 对大文件上传很重要
proxy_buffering off;
代理后端服务-https协议服务
代理配置
location ^~ /out/dev/ {
proxy_pass https://xxxx:443/;
proxy_set_header Host $Host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
# 代理缓冲区设置
proxy_request_buffering off; # 对大文件上传很重要
proxy_buffering off;
#proxy_ssl_verify off;
proxy_ssl_server_name on;
}
现象
curl "https://xxxx:443/out/xxx"
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
hr><center>nginx</center>
</body>
解决办法
# proxy_ssl_verify off;
# 该参数用于控制 Nginx 在代理 HTTPS 请求时,是否在 TLS 握手阶段发送 SNI 信息
# 启用时 (on): 发送 Host 头中指定的服务器名称
# 禁用时 (off): 不发送 SNI 信息 (默认值)
proxy_ssl_server_name on;
代理后端服务-接口报错
现象
curl "https://xxxx:443/out/xxx"
排查原因
默认没开underscores_in_headers 的参数,会自动过滤请求头有下划线的参数
解决方法
# server
underscores_in_headers on;

浙公网安备 33010602011771号