Nginx
使用 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 中進行更改。
我發現了問題,和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;