Поддомен неожиданно разрешается, несмотря на то, что Nginx не настроен на обратный прокси-сервер

#nginx #proxy #dns #cloudflare

#nginx #прокси #dns #cloudflare

Вопрос:

Итак, я настраивал свою домашнюю сеть для размещения нескольких веб-сайтов в домене (и его поддоменах), используя комбинацию cloudflare для прокси-сервера и обеспечения защиты от DDoS / HTTPS для сайтов, а также обратный прокси-сервер Nginx, работающий в моей сети, чтобы позволить нескольким сайтам возвращаться из-за одного и того же шлюзана что указывают записи DNS в cloudflare.

Для целей этого объяснения я заменю свое реальное доменное имя на [domainNameHere] .

Первое, что нужно объяснить, это моя настройка DNS в cloudflare.

У меня есть 4 CNAME записи, настроенные для выполнения следующих действий:

Обратите внимание, что я использую CNAME записи, потому что у меня нет статического домашнего IP-адреса, поэтому я использую динамический DNS-адрес, который преобразуется в IP-адрес моего шлюза. Этот же динамический DNS-адрес используется вместо записи A, поскольку я стремлюсь не обновлять записи A постоянно, а вместо этого просто разрешить его с помощью автоматически обновляемой динамической записи DNS.

  1. [domainNameHere].net — Обратный прокси возвращает корневой сайт при запросе этого домена.
  2. www.[domainNameHere].net — Ведет себя так же, как указано выше, только для обработки любых запросов www, обратный прокси возвращает один и тот же корневой сайт для обоих wwww и имя корневого домена.
  3. map.[domainNameHere].net — Когда вызывается этот поддомен [domainNameHere] , обратный прокси вместо этого возвращает другой сайт (карту, как вы могли догадаться).
  4. test.[domainNameHere].net — Это настройка прокси-записи DNS в cloudflare для будущих целей, я пока не намерен, чтобы он фактически возвращал сайт.

Теперь ожидаемое поведение заключается в том, что все эти записи DNS в настоящее время должны возвращать сайт, ожидать для test.[domainNameHere].net которого не следует — я бы ожидал, что он просто вернет стандарт ERR_NAME_NOT_RESOLVED , как и любая другая запись DNS, которая на самом деле никуда не ведет.

Вместо этого, однако, при test.[domainNameHere].net использовании он возвращает корневой сайт, который [domainNameHere].net и www.[domainNameHere].net разрешает?

Использование map www или имя корневого домена возвращает ожидаемый контент.

Я считаю, что я что-то неправильно настроил в настройках Nginx, ниже приведены два файла конфигурации, которые в настоящее время находятся в моем sites-enabled каталоге:

 server {
        listen 80;
        listen [::]:80;

        root /var/www/html;
        index index.nginx-debian.html;

        server_name [domainNameHere].net www.[domainNameHere].net;

        location / {
                try_files $uri $uri/ =404;
        }
}
  
 server {
        listen 80;
        listen [::]:80;

        server_name test.[domainNameHere].net;

        location / {
                proxy_pass http://jake-server:8123;
        }
}
  

Что-то не так с моей настройкой Nginx? Я думал, что поведение будет таким, что если я не настроил test.[domainNameHere].net Nginx, то он не разрешится на обратном прокси и, следовательно, ничего не вернет или просто вернет страницу Nginx 404/403?

Может быть, это как-то связано с тем, как первый установочный файл настроен так, чтобы указывать на локальные файлы на прокси, а не использовать proxy_pass , как обычно делается в обратном прокси?

Или это не проблема с Nginx, а проблема с тем, как я настроил Cloudflare?

Комментарии:

1. ERR_NAME_NOT_RESOLVED означает, что записи DNS нет, но она есть, и она указывает на сервер. Сервер будет использовать значение по умолчанию server для ответа на запросы, которые не соответствуют a server_name . Посмотрите, как Nginx обрабатывает запрос для получения подробной информации.

2. не могли бы вы опубликовать список записей на вкладке «DNS» cloudflare. У вас должно быть что-то вроде: [domainNameHere].net CNAME <динамическое dns-имя хоста> ПРОКСИРУЕТСЯ, www.[domainNameHere].net CNAME <динамическое dns-имя хоста> ПРОКСИРУЕТСЯ, карта. [domainNameHere].net CNAME <динамическое DNS-имя хоста> ПРОКСИРУЕТСЯ. Не должно быть записи для теста. [domainNameHere].net там

3. @RichardSmith Спасибо за ссылку, мне кажется, что наиболее подходящим для меня тогда было бы выполнить настройку, которая возвращает 444 или какой-либо другой код ошибки при использовании тестового домена — я отвечу и отвечу на свой вопрос, как только я пойду и выясню, как это сделать.