@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;
То всё будет работать как часы.

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

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

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

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

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

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект