Назад | Перейти на главную страницу

Отображать доменное имя вместо IP при использовании Nginx + Gunicorn + Django

Я создаю сервер на 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;