Re: виртуал хосты и rewrite

Maxim Dounin mdounin на mdounin.ru
Вт Мар 15 18:05:48 MSK 2011


Hello!

On Tue, Mar 15, 2011 at 04:46:54PM +0200, andy karimov wrote:

> Tuesday, March 15, 2011, 4:26:45 PM, you wrote:
> 
> >> Столкнулся с такой проблемой.
> >> Есть два виртуал хоста vhost1.com и vhost2.info
> >> У vhost2.info ранее было имя домена old.name.some.info, и для
> >> нормальной работы CMS у vhost2.info прописан редирект
> >> 
> >> rewrite ^(.*) http://vhost2.info$1 permanent;
> >> 
> >> все ровно работает до момента когда на vhost2.info понадобилось
> >> заливать файлы на 10 мб
> 
> MD> У вас в server{} для vhost2.info вообще в конфиге не задан, запрос 
> MD> на vhost2.info будет обработан в сервере по умолчанию на 
> MD> соответствующем listen-сокете.  Т.е. в первом, описанном в конфиге 
> MD> (или где повезёт, если файлы с описаниями серверов подключаются 
> MD> через include), ибо явно сервер по умолчанию не задан.
> 
> Задание vhost2.info в server_name приводит к loop'у при рерайте.

Очевидно, если его задать в том же сервере, что и rewrite - ничего 
хорошего не будет.

Сейчас у вас запросы к vhost2.info попадают, судя по всему, в 
server vhost1.com, и поэтому цикла нет.

[...]

> MD> Начните с простого - почитайте тут:
> MD> http://nginx.org/en/docs/introduction.html
> MD> А уже потом начинайте конфигурировать.
> 
> Читал, не помогло.

Не вижу проблемы - почитайте ещё раз...

[...]

> >> ==== vhost2
> >> server {
> >>   listen 80;
> >>   server_name *.vhost2.info old.name.some.info;
> >>   rewrite ^(.*) http://vhost2.info$1 permanent;
> 
> MD> "rewrite ^(.*)" - срабатывает всегда, соответственно любой запрос 
> MD> в этот сервер будет перенаправлен.  Все тщательно описанные 
> MD> location'ы в этом сервере - не будут работать никогда и смысла не 
> MD> имеют.
> 
> заданы, работают, все хорошо.
> с рерайтом только проблема :)

В том конфиге, который приведён - они не работают и работать не 
могут.  Почему - я объяснил.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru