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

andy karimov andy.karimov на gmail.com
Вт Мар 15 16:55:02 MSK 2011


Столкнулся с такой проблемой.

Есть два виртуал хоста vhost1.com и vhost2.info
У vhost2.info ранее было имя домена old.name.some.info, и для
нормальной работы CMS у vhost2.info прописан редирект

rewrite ^(.*) http://vhost2.info$1 permanent;

все ровно работает до момента когда на vhost2.info понадобилось
заливать файлы на 10 мб

тогда в конфиг было добавлено

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
неверно распознает виртуалхост

подскажите как и рыбку скушать и на велосипеде покататься ?

nginx 0.8.54 и 0.9.5, Windows


==== 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;
  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, 3:43:00 PM (GMT+2)




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