You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx代理uWSGI部署的Flask应用无法传递header信息的配置咨询

问题解决方法

核心原因

你遇到的header丢失问题主要由2个默认配置导致:

  1. Nginx默认会丢弃名称中包含下划线的HTTP请求头,多数自定义鉴权头的命名会包含下划线/横线,被Nginx默认过滤
  2. 现有Nginx配置未显式开启完整透传请求头、请求体的规则

配置修改步骤

1. Nginx配置修正

替换原有location块配置,新增必要参数:

##################### 修正后的NGINX CONFIG #####################
# 允许请求头中存在下划线,需放在server块或当前location块内
underscores_in_headers on;

location /customer/ {
    include uwsgi_params;
    uwsgi_pass unix:///var/www/html/cisco/cisco.sock;
    
    # 开启完整透传请求头、请求体(包含JSON格式请求数据)
    uwsgi_pass_request_headers on;
    uwsgi_pass_request_body on;
    
    # 显式传递通用头信息,可根据你实际使用的鉴权头名称调整
    uwsgi_param Authorization $http_authorization;
    uwsgi_param Content-Type $content_type;
    uwsgi_param X-Requested-With $http_x_requested_with;
    
    # 允许指定的所有HTTP请求方法
    limit_except GET POST PUT DELETE PATCH OPTIONS {
        deny all;
    }
    
    # 修正Flask获取请求协议、路径的逻辑,避免后续生成链接异常
    uwsgi_param HTTPS $https if_not_empty;
    uwsgi_param HTTP_HOST $host;
    uwsgi_param SCRIPT_NAME /customer;
}

注意:如果你使用自定义命名的鉴权头(例如X-User-Token),只需新增对应透传规则即可,格式为uwsgi_param 实际头名称 $http_头名全小写且横线替换为下划线;,比如X-User-Token对应的变量为$http_x_user_token。

2. 配置生效验证

修改完成后执行命令检查Nginx语法正确性:
nginx -t
返回success后执行重载命令生效:
systemctl reload nginx

3. uWSGI配置优化(可选)

你当前的uWSGI配置同时开启了HTTP端口监听和Unix套接字监听,如果生产环境不需要直接暴露5000端口访问,可注释掉http = 0.0.0.0:5000这一行降低安全风险,其余配置无需调整。


内容的提问来源于stack exchange,提问作者Texia Plazaola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:36:04