Nginx+Gunicorn+Django每3次请求显示默认页面问题求助
问题描述
在Debian 11.2系统上,采用Nginx 1.18.0反向代理Gunicorn 20.1.0(监听8000端口)部署Django应用,架构为:Nginx <-:8000-> Gunicorn <--> Django。
异常表现:
- 每3次请求(第1、4、7、10次等)会返回Nginx默认模板,对应Nginx访问日志中返回字节数为396的请求;正常请求返回Django页面,对应日志字节数6723。
- Nginx和Gunicorn的error.log均无报错(此前有错误记录,确认日志功能正常),服务器资源充足。
- 已尝试调整Gunicorn和Nginx的超时时间、开启Gunicorn debug级日志,问题未解决。
- 关键更新:Gunicorn访问日志显示未收到出现异常的请求。
附相关配置文件
Gunicorn配置文件(示例)
bind = "127.0.0.1:8000" workers = 3 timeout = 30 accesslog = "/var/log/gunicorn/access.log" errorlog = "/var/log/gunicorn/error.log" loglevel = "debug"
Nginx站点配置文件(示例)
server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8000; 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; } location /static/ { root /path/to/your/django/app; expires 30d; } }
排查思路与解决方案
1. 排查Nginx站点配置冲突
- 列出已启用的Nginx站点:
ls /etc/nginx/sites-enabled/,检查是否存在默认的default站点仍在启用,这可能导致Nginx在匹配请求时交替命中默认站点和自定义站点。 - 查看完整生效配置:
nginx -T,确认自定义站点的server_name是否精准匹配请求域名,是否存在其他server块(如server_name _的默认配置)优先或随机匹配请求。 - 解决措施:禁用默认站点(
unlink /etc/nginx/sites-enabled/default),确保自定义站点是唯一匹配目标,重启Nginx:systemctl restart nginx。
2. 检查Nginx请求转发逻辑
- 由于Gunicorn未收到异常请求,说明Nginx未将这些请求转发到后端,而是直接返回默认页。检查
proxy_pass配置是否存在路径匹配问题:确保URL末尾无多余斜杠(如http://127.0.0.1:8000而非http://127.0.0.1:8000/)。 - 在
location /块中添加proxy_redirect off;,避免Nginx对响应进行不必要的重定向处理。 - 排查是否存在Nginx模块(如
ngx_http_upstream_module)的特殊配置影响请求调度,比如错误的健康检查或负载均衡规则。
3. 验证请求的Host头匹配
- 异常请求可能因Host头不匹配自定义站点的
server_name,导致Nginx路由到默认站点。临时修改自定义站点的server_name为_(匹配所有请求),测试是否仍出现默认页,验证是否为匹配规则问题。 - 若默认站点未删除,可在默认站点配置中添加访问日志,记录异常请求的Host、User-Agent等信息,定位请求特征。
4. 排查网络层面的请求分流
- 检查服务器防火墙、前端负载均衡/CDN等设备,确认是否存在请求被分流到Nginx的默认监听端口或其他站点。
- 查看网络连接状态:
ss -tulpn,确认Nginx仅在预期端口监听,无其他进程占用端口导致请求被拦截。
5. 确认Gunicorn监听状态
- 检查Gunicorn的
bind配置是否为127.0.0.1:8000,确保仅接受本地Nginx的转发请求,避免外部请求直接访问。 - 重启Gunicorn:
systemctl restart gunicorn,查看进程状态:ps aux | grep gunicorn,确认worker进程正常运行。
内容的提问来源于stack exchange,提问作者Hafezmehr
相关产品推荐
相关产品推荐

