Проблема с rewrite

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


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





More information about the nginx-ru mailing list