我正在使用 Nginx + Gunicorn + Django 在 Ubuntu 上构建服务器。
我在 godaddy 注册了一个域名,该域名会重定向到服务器的 IP。Nginx 配置如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mydomainname.com www.mydomainname.com localhost;
location / {
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/path/to/my/socket.sock;
}
}
当我在浏览器中输入域名时,我会正确重定向到服务器。但是,浏览器中的 URL 现在显示的是 IP,而不是域名。
如何让服务器显示域名而不是IP?
(Godaddy 提供了使用前向屏蔽来实现这一点的选项,但我被建议不要使用这种方法,而且当我尝试这种方法时,浏览器仍然会抱怨跨域问题。)
我甚至不确定是否需要在 Nginx 或 Gunicorn 或 Django 中进行某些更改。
答案1
这示例配置建议您还需要将Host:
标头传递到上游。例如,从相同的配置中取出:
proxy_set_header Host $http_host;
# we don't want nginx trying to do something clever with
# redirects, we set the Host: header above already.
proxy_redirect off;
答案2
我找到了问题,它与 Nginx 的配置无关。我找错了地方。
我在购买域名的网站上错误地设置了 URL 转发命令。我应该设置类型“A”DNS 记录。我不知道这是两个不同的东西,很不幸在找到 DNS 记录之前就找到了 URL 转发功能。