Nginx

使用 Nginx + Gunicorn + Django 時顯示域名而不是 IP

  • January 19, 2018

我正在使用 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 中進行更改。

我發現了問題,和Nginx的配置無關。我在看完全錯誤的地方。

我在購買域名的網站上錯誤地設置了 URL 轉發命令。我應該設置一個類型為“A”的 DNS 記錄。我不知道這是兩個不同的東西,而且很不幸地在找到 DNS 記錄之前找到了 URL 轉發功能。

範例配置建議您還需要向上游傳遞標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;

引用自:https://serverfault.com/questions/892527