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

andrey at mail.anti-aging-drugs.com andrey at mail.anti-aging-drugs.com
Tue Aug 29 20:16:31 MSD 2006


Здравствуйте, Igor.

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

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

         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;
                 }
         }

> 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






More information about the nginx-ru mailing list