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

andy karimov andy.karimov на gmail.com
Вт Мар 15 17:46:54 MSK 2011


Hello Maxim,

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'у при рерайте.


>> тогда в конфиг было добавлено
>> 
>> client_max_body_size 12M;
>> client_body_buffer_size 256k;
>> 
>> и ничего не работало, по логам было видно что nginx ругается при
>> попытке аплоада на vhost2.info на то, что настройки vhost1.com не
>> позволяют аплоадить такой размер (увы я логи стер)
>> 
>> как выяснилось если в конфиге vhost2.info убрать редирект и вписать
>> имя vhost2.info в server_name то nginx нормально распознает
>> виртуалхосты.
>> 
>> если оставить редирект то имя хоста на который редиректится нужно
>> убирать из server_name иначе происходил loop и соответственно nginx
>> неверно распознает виртуалхост
>> 
>> подскажите как и рыбку скушать и на велосипеде покататься ?

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

Читал, не помогло.

>> nginx 0.8.54 и 0.9.5, Windows
MD> Just in case: nginx под Windows в production - это выбор смелых.
Спасибо, год работает - никаких проблем.


>> ==== vhost1
>> server {
>>   listen 80;
>>   error_page   500 502 503 504  /50x.html;
>>   location = /50x.html { root   html; }
>> 
>>   server_name vhost1.com;
>>     location / {
>>             access_log off;
>>             proxy_set_header  Host    $http_host;
>>             proxy_set_header    X-Real-IP    $remote_addr;
>>             proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
>>             proxy_pass   http://127.0.0.1:8088;
>>                }
>>        }
>> ==== vhost1
>> 
>> 
>> ==== vhost2
>> server {
>>   listen 80;
>>   server_name *.vhost2.info old.name.some.info;
>>   rewrite ^(.*) http://vhost2.info$1 permanent;

MD> "rewrite ^(.*)" - срабатывает всегда, соответственно любой запрос 
MD> в этот сервер будет перенаправлен.  Все тщательно описанные 
MD> location'ы в этом сервере - не будут работать никогда и смысла не 
MD> имеют.

заданы, работают, все хорошо.
с рерайтом только проблема :)

>>   error_page   500 502 503 504  /50x.html;
>>   location = /50x.html { root   html; }
>> 
>>   location ~* \.(jpg|jpeg|gif|png|css)$ {
>>             access_log off;
>>             root c:/home/vhost2.info;
>>             expires 3d;
>>                }
>> 
>>     location / {
>> 
>>             client_max_body_size 12M;
>>             client_body_buffer_size 256k;
>> 
>>             access_log off;
>>             proxy_set_header  Host    $http_host;
>>             proxy_set_header    X-Real-IP    $remote_addr;
>>             proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
>>             proxy_pass   http://127.0.0.1:8088;
>> 
>>             proxy_connect_timeout      30;
>>             proxy_send_timeout         30;
>>             proxy_read_timeout         30;
>>                }
>>        }
>> 
>> ==== vhost2


-- 
NictaTech Software
http://www.nictasoft.com
Tuesday, March 15, 2011, 4:42:38 PM (GMT+2)




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