Все работает отлично, кроме: нужно, чтоб домены вида 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@xxxxxxxxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxxxxxx
>>
>>
>>
>>
>>
> Игорь Сысоев
> http://sysoev.ru
--
С уважением,
noreply mailto:noreply@xxxxxxxxxxxxxxxxxxxxxxxxx