ПРОЕКТЫ 


  АРХИВ 


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[2]: Проблема с rewrite



On Tue, 29 Aug 2006 andrey@xxxxxxxxxxxxxxxxxxxxxxxxx wrote:

Спасибо за идею с двумя серверами. Очень понравилось во всех
отношениях.

Такой вариант сработает так, как ожидается?

        server {
                listen       81;
                server_name  www.example.ws example.ws;
                location / {
                        root   /home/example/data/public_html;
                        index  index.html index.htm;
                }
        }

        server {
                listen       81;
                server_name  *.example.ws;
                location / {
                        alias  /users/;
                        index  index.html index.htm;
                }
        }

В смысле разделения www.example.ws, example.ws и *.example.ws ?
Да, сработает, только во второй сервер нужно перед *.example.ws поставить
какое-нибудь имя без *, например, localhost.example.ws.

On Tue, 29 Aug 2006, Andrey Kravchenko wrote:

Задача: нужно перенаправить все запросы с доменов вида XXX.example.ws
в конкретную папку.

Делаю таким конфигом:

       server {
               error_log  logs/example_error.log  debug;
               listen       81;
               server_name  example.ws *.example.ws;
               location / {
                       root   /home/example/data/public_html;
                       index  index.html index.htm;
               }

               if ($host ~* .+\.example\.ws) {
                       rewrite ^(.*)$ /users$1 break;
               }

       }

При запросе на http://example.ws:81/ все работает.

При запросах вида http://XXX.example.ws:81/ получаю 404 ошибку с таким
логом:

2006/08/29 19:09:19 [error] 44111#0: *4669382 open()
"/home/example/data/public_html/users/users/inde
x.htm" failed (2: No such file or directory), client:
195.234.72.66, server: example.ws, URL: "/", ho
st: "qweqwee.example.ws:81"

Замена break на last никак не влияет, а других проблемных мест не
нахожу. Куда смотреть?

P.S. nginx/0.3.51

Так как "if rewrite" описан на уровне сервера и запрос для
XXX.example.ws:81/ обрабатывается так:

1) uri переписывается в /users/.
2) затем запрос попадает в "location /"
3) после этого перебираются индексы.

Нужно, if поставить внутрь "location /" и описать для него нужный root.

А вообще, я бы такую задачу решил бы двумя серверами:

         server {
                 listen       81;
                 server_name  example.ws;
                 location / {
                         root   /home/example/data/public_html;
                         index  index.html index.htm;
                 }
         }

         server {
                 listen       81;
                 server_name  www.example.ws *.example.ws;
                 location / {
                         alias  /users/;
                         index  index.html index.htm;
                 }
         }



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



--
С уважением,
noreply                          mailto:noreply@xxxxxxxxxxxxxxxxxxxxxxxxx






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



 




Copyright © Lexa Software, 1996-2009.