单IP下双Django项目分域名部署故障及是否需额外IP咨询
单IP下部署双Django站点的Nginx配置问题
我尝试通过Nginx配置部署两个Django项目,配置内容如下:
upstream django_project_1 { server unix:///home/project_1_user/project_1/project_1.sock; } server { listen 80; server_name project1.com www.project1.com; charset utf-8; client_max_body_size 75M; location /media { alias /home/project_1_user/project_1/media; } location /static { alias /home/project_1_user/project_1/static; } location / { uwsgi_pass django_project_1; include /home/project_1_user/project_1/uwsgi_params; } } upstream django_project_2 { server unix:///home/project_2_user/project_2/project_2.sock; } server { listen 80; server_name project2.com www.project2.com; charset utf-8; client_max_body_size 75M; location /media { alias /home/project_2_user/project_2/media; } location /static { alias /home/project_2_user/project_2/static; } location / { uwsgi_pass django_project_2; include /home/project_2_user/project_2/uwsgi_params; } }
执行命令 uwsgi --socket project_1.sock --module project_1.wsgi --chmod-socket=666 后,第一个站点可正常运行;修改对应.sock及project.wsgi名称后执行相同命令,第二个项目无报错却无法通过域名访问。请问是否需要购买额外IP,或是可通过配置实现单IP下双域名双站点?
解答
完全不需要购买额外IP,单IP下通过Nginx的虚拟主机配置完全可以实现双域名双站点,你的Nginx配置逻辑本身是正确的,问题出在其他环节,按以下步骤排查:
- 验证域名解析:用
ping project2.com或nslookup project2.com在本地测试,确认域名已正确指向服务器公网IP,避免解析未生效或指向错误。 - 重载Nginx配置:修改配置后必须执行
sudo nginx -s reload让配置生效,先执行sudo nginx -t检查配置语法是否存在错误,若有错误会直接提示。 - 检查uWSGI进程与sock文件:
- 用
ps aux | grep uwsgi确认第二个项目的uWSGI进程是否正常运行; - 检查
project_2.sock文件是否存在于/home/project_2_user/project_2/目录下,权限是否为666; - 若执行uWSGI命令时不在项目根目录,需添加
--chdir参数指定项目路径,比如:uwsgi --socket project_2.sock --module project_2.wsgi --chdir /home/project_2_user/project_2 --chmod-socket=666
- 用
- 查看Nginx日志:检查Nginx的访问日志(默认
/var/log/nginx/access.log)和错误日志(默认/var/log/nginx/error.log),访问project2.com后查看是否有连接失败、权限不足等报错信息。 - 排查防火墙/安全组:确认服务器防火墙或云服务商安全组已开放80端口,虽然第一个站点能访问,但需确保无针对project2.com的特殊限制。
内容的提问来源于stack exchange,提问作者w1cee
相关产品推荐
相关产品推荐

