регулярки в server name
playnet
nginx-forum на nginx.us
Пн Июл 2 15:35:03 UTC 2012
Согласно документации, в server_name можно
использовать регулярки.
Понадобилось сделать редирект c урлов
вида www.sub.site.ru на sub.site.ru, при этом
сохранив работу www.site.ru. sub - доменов
более 50.
Сам сайт описан как
server_name site.ru www.site.ru *.site.ru
Сделал отдельный сервер с server_name
~^www\.(w+)\.site.ru$;
по логике - имя корректное. Этот блок
идёт выше основного. При этом в него мы
не попадаем никогда. Как показало 4 часа
ковыряния, "у регэкспов в сервер_нейм
приоритет минимальный и туда попадаем
если нет ничего лучше". Есть
возможность выставить этому регэкспу
высокий приоритет? Или только изменить
главное описание, сделав его также
регэкспом и потеряв в
производительности?
Использовать дефолтный сервер не
вариант - сайтов на сервере больше 20
плюс "по умолчанию" должно отдавать
ошибку. Сайтов с такой системой в
дальнейшем также будет больше одного.
Второй вариант - сделать так нелюбимый
тут if ($http_host ~* ^www\.w+\.site\.ru)... и как
модифицировать $http_host? rewrite меняет
только uri.
Третий - через встроенный perl. Не
хотелось бы, но если у кого такая схема
работает - просьба поделиться
вариантами.
четвертый, совсем уж через 1 место -
описать каждый www-поддомен в отдельном
сервере.. 50+ раз...
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,228177,228177#msg-228177
Подробная информация о списке рассылки nginx-ru