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