Я создаю сервер на Ubuntu, используя Nginx + Gunicorn + Django.
У меня есть доменное имя, зарегистрированное в 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-адресов на веб-сайте, на котором я купил свое доменное имя. Вместо этого я должен был настроить DNS-запись типа «A». Я не знал, что это две разные вещи, и мне не повезло найти функцию переадресации URL-адресов до того, как найти записи DNS.
В образец конфигурации предполагает, что вам также необходимо пройти 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;