ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: странности с optimize_ser ver_names



On Tue, 7 Mar 2006, Alexey Popov wrote:

nginx-0.3.27 раздает статику с большого виртхостинга, вычисляя root из хостнейма с помощью regex:

      server {
              listen  xx.xx.xx.xx:80;
              <много listen>

              server_name     .domain1.ru
                                      ......
                                      .domainN.ru;

              error_page 404 402 http://bigdomain.ru/404.html;
              access_log      /var/log/vhosts/users-access_log;

              optimize_server_names   off;

              location ~* ^.+\.(html?)$ {
                      proxy_pass      http://127.0.0.1;
              }
              location /icons/ {
                      root    /usr/local/www;
              }
              location / {
                      set $rootdir nonexistent;
if ($host ~* (([a-z0-9-])([a-z0-9-])[a-z0-9-]*)\.([a-z0-
9-]+\.[a-z]+)$) {
                              set $rootdir all/hosting/$4/$2/$3/$1;
                      }

                      root    /$rootdir;
                      index index.html index.htm;
                      autoindex on;
              }
      }

При запросе http://sub1.domainN.ru/dir (где dir - существующая директория)
хочется, чтобы nginx выдавал редирект на http://sub1.domainN.ru/dir/ ,
как это делал Апач до установки nginx'a. Для этого написано:
optimize_server_names   off;
Но этого не происходит, и редирект всегда отдается на первый домен
в server_name: http://domain1.ru/dir/
На другом виртхостинге, где root берется из map, все работает нормально.
Что не так?

А если "optimize_server_names  off" поставить на уровень http ?

Хочу также обратить внимание всех на необходимость инициализации $rootdir
в данном примере:  set $rootdir nonexistent;
Угадайте, что будет, если вдруг в $host будет что-то не попадающее
в regex. ;-)

Лучше делать так:

set   $rootdir nonexistent;
...
root  /all/hosting/$rootdir;


Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.