IPv4 Public IP и Public DNS (IPv4), обслуживающие разный контент - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть приложение Django-nginx-gunicorn, работающее на экземпляре AWS EC2. Я успешно настроил nginx и могу получить весь контент по общедоступным IP-адресам. Но этого не происходит на внешнем DNS-имени хоста, предоставленном AWS (пример: ec2-203-0-113-25.compute-1.amazonaws.com). Мой по-прежнему отображает страницу по умолчанию nginx Публичный IP-адрес x.x.x.x обслуживает контент приложения Django.

Вот server часть nginx.conf:

server {
        listen 80;
        server_name X.X.X.X; # Has the Public IP address here
        access_log /var/log/nginx-access.log;
        error_log /var/log/nginx-error.log;
        root /home/ubuntu/project/ToDo-application/;
        location /static {
                root /home/ubuntu/ToDo-application/frontend;
        }

        location / {
                include /etc/nginx/mime.types;
                default_type application/octet-stream;
                proxy_pass http://127.0.0.1:8000;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

Как получить DNS по умолчанию для обслуживания того же контента, что и общедоступный IP-адрес?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Попробуйте следующее:

server {
        listen 80 default_server;
        server_name X.X.X.X; # Has the Public IP address here
        access_log /var/log/nginx-access.log;
        error_log /var/log/nginx-error.log;
        root /home/ubuntu/project/ToDo-application/;
        location /static {
                root /home/ubuntu/ToDo-application/frontend;
        }

        location / {
                include /etc/nginx/mime.types;
                default_type application/octet-stream;
                proxy_pass http://127.0.0.1:8000;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

Согласно официальной документации Nginx , использование default_server может сказать Nginx, что определенное определение server должно быть прослушивателем по умолчанию для данного порта.

Стоит также отметить, что вы можете включить несколько доменных имен, IP-адресов и шаблонов регулярных выражений в одну строку server_name, чтобы указать, что сервер должен блокировать, предназначен для обработки перечисленных опций.

0 голосов
/ 08 ноября 2018

Удалите имя_сервера из вашей конфигурации:

    server_name X.X.X.X

Изменение:

    listen 80;

Кому:

    listen *:80;

Проверьте / etc / nginx / sites-available и / или / etc / nginx / sites-enabled, должен быть файл конфигурации по умолчанию (по умолчанию). Я полагаю, что он содержит конфигурацию по умолчанию, на которую указывает ваш DNS, и отображает HTML в /var/www/html.

Закомментируйте содержимое этого файла ... затем перезапустите nginx:

    service nginx restart

Здесь происходит то, что одна конфигурация говорит nginx связываться с портом 80, но ищет заголовок вашего публичного IP, другая конфигурация (конфигурация по умолчанию), вероятно, говорит ему использовать DNS в качестве имени сервера. Выполнив привязку к *: 80 без имени сервера, вы дадите nginx команду обслуживать вашу конфигурацию на всех IP-адресах независимо от заголовка имени сервера.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...