Задать вопрос
@tehnology-online

Правильное указание servername Настройка Nginx как Frontend к Web-серверу Apache?

Смотрю инструкции по настройке. В некоторых

listen 80;
server_name .site.ru

в других

server_name localhost

в третьих

server_name _

А как правильно то и почему?

nginx.org/ru/docs/http/request_processing.html

Вот я почитал, и, учитывая, server_name указывает инструкцию для обработки nginx, пришел все таки к выводу, что должен быть указан localhost так как задача nginx освободить сервер apache. А apache должен видимо вернуть localhost. Или я что-то не правильно понял?

С другой стороны учитывая что в инструкции написано

location / {
proxy_pass 127.0.0.1:81/;

То видимо все-таки запрос идет на сервер apache, а значит в server_name должно быть указан название сайта. Если так, то как указать server_name для всех сайтов. И как же оно все таки происходит на самом деле?

Apache мне нужен, потому что я пишу скрипты не только для себя. В общем-то я и читаю документацию, и на основе документации и задал здесь вопросы. Все внешние запросы получается отдает и принимает nginx. Т.е. он принимает запрос смотрит
listen 80;
server_name .site.ru,
видит что запрос пришел с такого-то сайта. Значит там вместо .site.ru должна стоять какая-то универсальная переменная передает это дело
location / {
proxy_pass 127.0.0.1:81/;
Которая перенаправляет запрос 127.0.0.1:81, т.е. получается серверу apache, а сервер обрабатывает отдает Nginx и освобождается, а nginx уже отдает готовые страницы клиенту. Но с другой стороны возможно
server_name localhost
как раз и пишут для того, чтобы nginx принял запросы от apache, обработал их и отправил клиенту.
В третьих вполне возможно, что
server_name localhost
server_name _
Служат как раз для того, чтобы как написано в документации
"это просто одно из множества некорректных доменных имён, которые никогда не пересекутся ни с одним из реальных имён"
Не ясно для чего может вообще понадобиться писать подобный server_name, если он никогда не пересечется в реальности то и обрабатывать нечего. Другое дело, что например возможно что самая последняя инструкция server_name, вне зависимости от имени обрабатывается в обязательном порядке, и там уже без разницы что указывать.
А как оно на самом деле я надеялся, что мне объяснят здесь. И надеюсь не на двухсмысленных ответ навроде да или нет
  • Вопрос задан
  • 3295 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Tark К ответам на вопрос (3)
Tark
@Tark
Pyramid'альный мир
Указывать нужно адрес вашего сайта, это и будет "правильный" server_name.

В примерах конфигурации серверов, обрабатывающих все запросы, встречается странное имя “_”:
server {
listen 80 default_server;
server_name _;
return 444;
}

Оно не является каким-то особенным, это просто одно из множества некорректных доменных имён, которые никогда не пересекутся ни с одним из реальных имён. С тем же успехом можно использовать имена типа “--” и “!@#”. nginx.org/ru/docs/http/server_names.html
Ответ написан
Комментировать