Nginx, gunicorn & django на amazon lightsail, что такое имя хоста ip-адреса?

Я развернул Django-приложение на Amazon Lightsail VPS, и оно работает как ожидалось, когда я обращаюсь к нему по доменному имени xxxxx.com, однако, если я пытаюсь обратиться к нему по IP-адресу, оно выдает ошибку:

Invalid HTTP_HOST header: 'ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com'. 
You may need to add 'ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com' to ALLOWED_HOSTS.
DisallowedHost at /

Invalid HTTP_HOST header: 'ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com'. 
You may need to add 'ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com' to  ALLOWED_HOSTS.
Request Method: GET
Request URL: https://ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com/`

Конечно, MY-IP-ADDR-Here - это номер моего реального IP-адреса.

Я странствую:

  • Почему lightsail изменил url с 'MY.IP.Addr.Here' на ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com/?
  • Почему nginx проксировал этот запрос на Django? Я ожидал, что он отбросит запрос.
  • Безопасно ли добавить ec2-MY-IP-ADDR-Here.compute-1.amazonaws.com к моим разрешенным хостам?
  • Стоит ли удалить MY-IP-ADDR-Here из файла settings.py?

Ниже перечислены соответствующие параметры конфигурации:

/etc/nginx/sites-enabled/mysite

server {
    listen 80;
    server_name xxxxx.com MY.IP.ADDr.Here;
    location / {
        include proxy_params;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_pass http://unix:/run/gunicorn.sock;        
        }
      }
 # many lines created  hy certbot  
 #
`# I added the following block to tell nginx to discard any request that doesn't match the xxxxx.com MY.IP.ADDr.Here;
# https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/#allowed-hosts`

 server {
    listen 80 default_server;
    listen [::]:80 default_server;
    return 444;
  }

myproject/settings.py

 ALLOWED_HOSTS = ["xxxxx.com", "MY-IP-ADDR-Here"]
  1. Не рекомендуется добавлять его в ALLOWED_HOST таким образом, так как это небезопасно.

  2. Добавьте его в переменные env, если вам необходимо получить доступ к странице по ip-адресу, в противном случае не делайте этого.

Вернуться на верх