Re: виртуал хосты и rewrite
Maxim Dounin
mdounin на mdounin.ru
Вт Мар 15 17:26:45 MSK 2011
Hello!
On Tue, Mar 15, 2011 at 03:55:02PM +0200, andy karimov wrote:
> Столкнулся с такой проблемой.
>
> Есть два виртуал хоста vhost1.com и vhost2.info
> У vhost2.info ранее было имя домена old.name.some.info, и для
> нормальной работы CMS у vhost2.info прописан редирект
>
> rewrite ^(.*) http://vhost2.info$1 permanent;
>
> все ровно работает до момента когда на vhost2.info понадобилось
> заливать файлы на 10 мб
У вас в server{} для vhost2.info вообще в конфиге не задан, запрос
на vhost2.info будет обработан в сервере по умолчанию на
соответствующем listen-сокете. Т.е. в первом, описанном в конфиге
(или где повезёт, если файлы с описаниями серверов подключаются
через include), ибо явно сервер по умолчанию не задан.
>
> тогда в конфиг было добавлено
>
> 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
> неверно распознает виртуалхост
>
> подскажите как и рыбку скушать и на велосипеде покататься ?
Начните с простого - почитайте тут:
http://nginx.org/en/docs/introduction.html
А уже потом начинайте конфигурировать.
>
> nginx 0.8.54 и 0.9.5, Windows
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;
"rewrite ^(.*)" - срабатывает всегда, соответственно любой запрос
в этот сервер будет перенаправлен. Все тщательно описанные
location'ы в этом сервере - не будут работать никогда и смысла не
имеют.
> 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
Maxim Dounin
Подробная информация о списке рассылки nginx-ru