@igordata

Конфиг nginx: Мистическиое зацикливание редиректа при использовании переменной в директиве server_name. Где грабли?

Всем привет. Столкнулся с мистикой.

Есть конфиг (один файл):
server {
  server_name  www.test.ru;
  return        301 http://test.ru$request_uri;
}

server {
	set $somevar test.ru;
	listen   80;
	server_name  $somevar;
	root   /var/www/$somevar;
..и др.


При его использовании возникает вечный редирект с test.ru даже без www.

Если убрать кусок
server {
  server_name  www.test.ru;
  return        301 http://test.ru$request_uri;
}

Или убрать переменную из server_name
server_name test.ru;
То всё будет работать как часы.

Не понимаю механизма проблемы. Где грабли?

Спасибо, что прочли. Надеюсь на ответы. Любые идеи приветствуются.
  • Вопрос задан
  • 2543 просмотра
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
В директиве `server_name` не может быть переменных.

В результате у вас два сервера, один с именем `www.test.ru`, второй с именем `$somevar`.

Запрос на сервер `test.ru` не находит сервера с таким именем, попапает в дефолтный сервер, в данном случае первый, и получается бесконечный редирект.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы