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

Nginx与uWSGI协议不匹配?请求超时问题排查

问题分析与解决方案

核心问题是uWSGI启动命令和Nginx配置的协议不匹配:

  • 你用uwsgi --http :8000 --module myproject.wsgi启动时,uWSGI是以HTTP协议监听8000端口,只能处理HTTP请求;
  • 而Nginx配置里应该是用了uwsgi_pass指令,会向后端发送uWSGI原生协议的请求,导致uWSGI无法识别,最终超时无响应。

两种修复方案

方案1:调整uWSGI启动命令(推荐,标准架构)

将uWSGI切换为监听uWSGI原生协议,替换--http参数为--socket或--uwsgi-socket:

# 用TCP端口监听uWSGI协议
uwsgi --socket :8000 --module myproject.wsgi

# 或者用Unix套接字(性能更优,需保证Nginx有权限访问)
uwsgi --socket /tmp/uwsgi.sock --module myproject.wsgi --chmod-socket=664

对应Nginx的配置(以TCP端口为例):

location / {
    uwsgi_pass 127.0.0.1:8000;
    include uwsgi_params; # 必须包含这个文件,提供uWSGI协议所需的请求头
}

如果用Unix套接字,把uwsgi_pass改成unix:/tmp/uwsgi.sock;即可。

方案2:调整Nginx配置(不推荐,性能较差)

如果要保留uWSGI的HTTP协议模式,Nginx不能用uwsgi_pass,改用proxy_pass转发HTTP请求:

location / {
    proxy_pass http://127.0.0.1:8000;
    # 传递必要的请求头,避免Django获取不到正确的请求信息
    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;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:57:02