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

Настройка Google Domains, EC2 и Nginx

У меня возникла большая проблема при попытке настроить доменное имя через Google Domains указать на мой EC2 (Ubuntu Server) экземпляр.

Я настроил nginx в качестве обратного прокси для обслуживания Django приложение. Я также настроил и связал эластичный IP-адрес с EC2 пример. Когда я захожу на эластичный IP (34.XXX.XXX.28), Я отлично подхожу к приложению. Это говорит мне о том, что в экземпляре EC2 все настроено правильно (nginx, приложение Django и т. Д.).

Проблема в том, что я захожу на свое доменное имя по адресу www.mydomain.com, Я получаю эту страницу:

Добро пожаловать в Nginx!

Если вы видите эту страницу, веб-сервер nginx успешно установлен и работает. Требуется дополнительная настройка.

Для онлайн-документации и поддержки посетите nginx.org. Коммерческая поддержка доступна на nginx.com.

Спасибо за использование nginx.

Я не понимаю, почему прямое посещение эластичного IP-адреса работает, но посещение через доменное имя (www.mydomain.com) приведет к умолчанию nginx страница. Может ли кто-нибудь указать мне правильное направление?

Вот некоторый контекст:

upstream djangoapp {
    server unix:/var/www/run/djangoapp.sock;  
}

server {

    listen 80;
    server_name 34.XXX.XXX.28;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://djangoapp ;   
    }

    location /static/ {
        alias /var/www/djangoapp/static/;       
        autoindex on;
    }   
}

Когда вы используете общедоступный IP-адрес своего сайта, он избегает DNS. Вы просматриваете на 100% правильные вещи, между ними нет механизма кеширования DNS. Без точных данных журнала ошибок нельзя сказать, что полная конфигурация. Но конфигурация Nginx неверна, как указывали другие, и очевидно, у Nginx есть документация. пример конфигурация приведена в официальных документах. Вы увидите, что они сказали о подобном формате, как и другие ответы, комментарии здесь.

Только мы можем сказать:

  1. установите TTL DNS на очень низкий, например, 30 секунд во время отладки
  2. и установить server_name www.your-domain-name.com; из nginx.
  3. Затем проверьте распространение DNS
  4. доступ через браузер Tor для проверки. Возможно, вы видите кешированную страницу.

После исправления запустите nginx -t config и перезапустите nginx, чтобы вступили в силу.

Nginx может прослушивать несколько веб-сайтов на одном IP-адресе, как http, так и https. Прямо сейчас он прослушивает запросы к определенному IP-адресу, а не к доменному имени. Решение состоит в том, чтобы указать домены, которые вы хотите прослушивать, например

server_name example.com www.example.com;

Обычно вам следует прослушивать только один домен. Поддомены должны быть перенаправлены в основной домен, хотя, будет ли www или корневой домен, который вы считаете «основным», полностью зависит от вас.

# Main server
server {
  listen 80;
  server_name example.com;
  // Locations etc
}

server {
  listen       80;
  server_name  www.example.com;
  return 301   https://example.com$request_uri;
}

Вы также можете заблокировать «сервер по умолчанию» любым заданным сервером. Это может быть основной серверный блок для вашего сайта или другой блок для предотвращения ответа вашего сервера по IP. Возможно, вы не захотите отвечать на IP-адреса, потому что Интернет постоянно сканируется

server {
  listen      80 default_server;
  server_name 1.2.3.4 example.com;
}

Это сервер по умолчанию, который отклоняет трафик на ваш IP-адрес, который не обрабатывается конкретным серверным блоком.

server {
  listen      80 default_server;
  server_name _; # Wildcard, any domain is served
  return      444; # This means "go away", effectively
}

Nginx прослушивает IP-адрес. Вам необходимо добавить свое доменное имя в директиву server_name. Затем перезагрузите nginx, и он должен работать нормально.