Re[4]: Проблема с rewrite
andrey at mail.anti-aging-drugs.com
andrey at mail.anti-aging-drugs.com
Wed Aug 30 18:32:45 MSD 2006
Здравствуйте, andrey.
Упс, прошу прощения.
С двумя серверами, кажется, получилось.
> Все работает отлично, кроме: нужно, чтоб домены вида www.example.ws и
> example.ws смотрели в папку 1, а все остальные поддомены
> *.example.ws смотрели в папку 2
> Пробую делать это с помощью проверки хоста регулярным выражением, но
> не получается
> if ($host ~* ^[^w][^w][^w][a-zA-Z0-9-]+(\.example\.ws)$) {
> set $add_path /ub;
> }
> Пробовал исключение делать и так (с тем же рез-м):
> ^(?<!www)([a-zA-Z0-9-])+(\.example\.ws)$
> ^(?!www)([a-zA-Z0-9-])+(\.example\.ws)$
> Вариант с двумя серверами также не прокатил. Получается, что у шаблона
> приоритет выше, чем у конкретно заданного значения?
> 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 zzz.example.ws *.example.ws;
> location / {
> root
> /home/example/data/public_html/additional/;
> index index.html index.htm;
> }
> }
>> 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
--
С уважением,
noreply mailto:noreply at mail.anti-aging-drugs.com
More information about the nginx-ru
mailing list