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

Amazon Linux 2部署Nginx+Django后仍显示系统欢迎页问题排查

问题排查与解决:Nginx未代理Django服务仍显示欢迎页

核心排查方向

出现Amazon Linux 2欢迎页,说明Nginx没有匹配到你定义的api.testsite.com server块,而是走了默认配置。按以下顺序排查:

1. 检查配置文件是否被Nginx加载

Amazon Linux 2的Nginx默认只加载/etc/nginx/conf.d/目录下带.conf后缀的文件。你的配置文件名为testsite.com,不符合加载规则,Nginx根本没读到这个配置。

解决操作:

# 重命名配置文件,添加.conf后缀
sudo mv /etc/nginx/conf.d/testsite.com /etc/nginx/conf.d/testsite.com.conf
# 重新加载Nginx配置
sudo systemctl reload nginx

2. 验证配置是否已加载

执行命令确认Nginx是否识别了你的server块:

sudo nginx -T | grep -A 10 -B 2 "api.testsite.com"

如果能输出你写的server块内容,说明配置已加载;如果没有,回到第一步检查文件名和主配置的include规则(查看/etc/nginx/nginx.conf里的include行)。

3. 检查Unix套接字的权限

Gunicorn生成的sock文件权限可能限制了Nginx进程访问:

  • 查看sock文件权限:
ls -l /home/ec2-user/backend/testsite.sock
  • 修复权限方案:
    在Gunicorn的启动参数中添加--umask 007,让sock文件的所属组拥有读写权限;同时把Nginx运行用户加入ec2-user组:
sudo usermod -aG ec2-user nginx
# 重启Gunicorn和Nginx
sudo systemctl restart [你的Gunicorn服务名]
sudo systemctl restart nginx

4. 确认请求的Host头是否正确

如果DNS解析或本地hosts配置错误,请求的Host头可能不是api.testsite.com,导致Nginx匹配默认server。查看Nginx访问日志确认:

sudo tail -f /var/log/nginx/access.log

访问api.testsite.com后,看日志里的Host字段是否为api.testsite.com,如果不是,检查DNS解析或本地hosts设置。

5. 把自定义server设为默认

如果存在其他默认server块(比如/etc/nginx/conf.d/default.conf),可以在你的server块中添加default_server参数,确保优先匹配:

server {
    server_name api.testsite.com;
    listen 80 default_server; # 添加这行
    location = /favicon.ico { access_log off; log_not_found off; }
    location / {
        include proxy_params;
        error_log logs/error.log warn;
        proxy_pass http://unix:/home/ec2-user/backend/testsite.sock;
    }
}

修改后重新加载Nginx配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:43:09