我正在尝试使用gunicorn 和nginx 设置一个django 应用程序。我遵循了本教程。一切似乎都正常,但是当我将
/etc/nginx/sites-available/project
中的 server_name 编辑为服务器 IP 地址以外的任何内容时,我得到默认的 nginx 索引页面而不是 django 应用程序。当这是服务器配置时:
server {
listen 80;
server_name <myserverip>;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/django/project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
当我将 IP 地址输入浏览器时,一切都会按预期工作(nginx 为应用程序提供服务),但如果我添加域名来替换 IP,或者除了 IP 之外,我得到的只是任一位置的 nginx 页面。我的settings.py中的ALLOWED_HOSTS包括服务器ip和域名。我在 nginx 日志中也看不到任何问题。目前不确定问题是什么。
您应该能够更改 server_name 以包含您的域:
server_name <myserverip> <mydomainname>;
如果您只想使用域名访问该网站,请随意删除 IP 地址。您还需要添加您想要为同一站点提供服务的任何子域(即 www)。例如:
server_name youdomainname.com www.yourdomainname.com;
更新配置文件后不要忘记重新启动 nginx。
我解决了这个问题。 nginx 默认配置 /etc/nginx/sites-available/default 影响了我的配置。我注释掉了默认配置的服务器部分,域正在按预期工作。
在server_name中你可以写一个IP或URL,但同时在你的settings.py中你必须授予它权限。
[设置.py]
ALLOWED_HOSTS = ['IP', 'URL']
在这里,我上传了一些可以帮助你的东西到我的github: