使用 Nginx + Gunicorn + Django 时显示域名而不是 IP

使用 Nginx + Gunicorn + Django 时显示域名而不是 IP

我正在使用 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 转发功能。

相关内容