Re[2]: Проблема с rewrite

Igor Sysoev is at rambler-co.ru
Tue Aug 29 20:23:00 MSD 2006


On Tue, 29 Aug 2006 andrey at mail.anti-aging-drugs.com 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 at mail.anti-aging-drugs.com
>
>
>
>
>

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





More information about the nginx-ru mailing list