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