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

Nginx显示默认页面而非Django应用问题排查求助

Django部署后Nginx显示默认页面的排查与解决

核心排查方向

你的Gunicorn直接绑定8000端口能正常访问,说明Django和Gunicorn本身没问题,问题出在Nginx的配置加载、站点匹配或Hestia CP的配置覆盖上,按以下步骤逐一排查:

1. 验证Nginx站点配置的有效性与启用状态

首先确认自定义的Nginx站点配置是否被正确加载:

  • 检查配置文件语法是否合法:
    sudo nginx -t
    
    若报错,根据提示修正配置文件中的语法错误(比如括号不闭合、路径写错等)。
  • 检查站点配置是否已启用:
    标准Nginx路径下,需确保sites-available中的配置文件在sites-enabled中有软链接:
    ls -l /etc/nginx/sites-enabled/
    
    如果你用Hestia CP管理站点,配置文件通常在/home/[你的用户名]/web/[myexample.com]/conf/nginx目录下,需确认Hestia生成的配置中包含了指向Gunicorn的反向代理规则。

2. 检查Nginx Server块的匹配优先级

Nginx会优先匹配最精确的server_name,如果你的配置中server_name写错,或者默认的default_server优先级更高,就会显示默认页面:

  • 打开你的Nginx站点配置文件,确认server_name字段完全匹配你的域名:
    server {
        listen 80;
        server_name myexample.com www.myexample.com; # 确保域名拼写正确
        # 其他代理配置...
    }
    
  • 检查是否存在默认的default_server配置:
    如果/etc/nginx/sites-enabled/default软链接存在,或者其他配置文件中有listen 80 default_server的规则,会优先匹配该规则。执行以下命令删除默认配置链接:
    sudo rm /etc/nginx/sites-enabled/default
    
    然后重载Nginx:
    sudo nginx -s reload
    

3. 确认Hestia CP未覆盖自定义配置

Hestia CP会自动生成Nginx配置,如果你手动修改了配置,可能被Hestia的自动更新覆盖:

  • 登录Hestia CP面板,进入对应站点的Web设置页面,查看是否启用了反向代理功能:
    • 若启用,需确保反向代理目标指向127.0.0.1:8000(或你Gunicorn监听的端口)
    • 若未启用,需手动添加反向代理规则,或在Hestia的自定义Nginx配置区域添加代理代码:
      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;
      }
      
  • 修改Hestia配置后,记得点击Save让Hestia重新生成Nginx配置,并重载Nginx。

4. 查看Nginx访问日志定位请求流向

通过访问日志确认请求是否落到了你的自定义Server块:

  • 标准Nginx访问日志路径:
    tail -f /var/log/nginx/access.log
    
  • Hestia CP的站点日志路径:
    tail -f /home/[你的用户名]/web/[myexample.com]/logs/nginx.access.log
    
    访问你的域名,查看日志中的server_name字段,如果显示的是_(默认服务器),说明你的自定义Server块未匹配到请求,回到步骤2检查server_name配置。

5. 验证Gunicorn服务的运行状态(若使用systemd管理)

如果你配置了Gunicorn的systemd服务,需确保服务正常运行:

  • 查看服务状态:
    sudo systemctl status gunicorn
    
    若服务未启动,执行以下命令启动并设置开机自启:
    sudo systemctl start gunicorn
    sudo systemctl enable gunicorn
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:52:38