@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, вне зависимости от имени обрабатывается в обязательном порядке, и там уже без разницы что указывать.
А как оно на самом деле я надеялся, что мне объяснят здесь. И надеюсь не на двухсмысленных ответ навроде да или нет
  • Вопрос задан
  • 2758 просмотров
Пригласить эксперта
Ответы на вопрос 3
Tark
@Tark
Pyramid'альный мир
Указывать нужно адрес вашего сайта, это и будет "правильный" server_name.

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

Оно не является каким-то особенным, это просто одно из множества некорректных доменных имён, которые никогда не пересекутся ни с одним из реальных имён. С тем же успехом можно использовать имена типа “--” и “!@#”. nginx.org/ru/docs/http/server_names.html
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
1) Рекомендую указывать имя конкретного домена который вам нужен, по поводу localhost и так понятно, по поводу точки в начале и _ почитайте доку, там всё написано подробно
2) Почти никогда Apache не нужен, просто перенесите правила из .htaccess в аналогичные правила в виртуальный хост Nginx (для популярных систем можно найти готовый конфиг) и не городите лишнего
Ответ написан
Комментировать
@tehnology-online Автор вопроса
У меня не популярная система и меня интересует именно при указании nginx как фронтэнда. Апатч же получается принимает и отдает данные Nginx, а Nginx принимает и отдает данные пользователю. Учитывая, что я не очень понимаю для чего служит параметр server_name, то при таком взаимодействии мне не ясно, как его указать правильно, учитывая, что в разных инструкциях он указывается по разному.
nginx.org/ru/docs/http/ngx_http_core_module.html#s... в документации данное выражение
server_name _
указывается два раза, но его значение не описывается не то, чтобы подробно, но даже и кратко.

Если правильно указывать название сайта, то для чего нужны остальные варианты, тот же localhost и как указать сразу все сайты

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

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 апр. 2024, в 19:21
300 руб./за проект
23 апр. 2024, в 19:05
15000 руб./за проект
23 апр. 2024, в 18:47
10000 руб./за проект