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
相关产品推荐
相关产品推荐

