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;
posted @ 2026-01-08 17:56  小吉猫  阅读(2)  评论(0)    收藏  举报