Оптимальная конфигурация для vhosting'а

Igor Sysoev is at rambler-co.ru
Mon Dec 26 19:42:18 MSK 2005


On Mon, 26 Dec 2005, Alexey N. Kovyrin wrote:

> Alexey N. Kovyrin пишет:
>> Доброе время суток,
>> 
>> Возник такой вопрос: как сделать оптимальнее в конфигурации маппинг 
>> виртуальных хостов на домашние каталоги пользователей виртуалхостинга?
>> У меня есть таблица соответствий вида
>> 
>> some_vhost_name => /data/home/hostNNN
>> 
>> Я понимаю, что можно сделать 10000-50000 блоков server, но как-то 
>> некрасиво, имхо... нельзя ли использовать map+rewrite как-нибудь?
> Что-то я не понимаю в логике работы rewrite... Сделал такую тестовую 
> конфигурацию:
>
> map $server_name $vhost_id {
>     default           0;
>     h1.servik.com     1;
>     h2.servik.com     2;
> }
>
> server {
> listen       8080;
> server_name  home *.servik.com;
>
> location / {
>           root servik;
>           index  index.html index.htm;
>
>           rewrite ^/(.*)$ /host$vhost_id/$1 break;
> }
>
>
> Получил:
> 1) При запросе = http://h2.servik.com/index.htm получаю сожержимое файла 
> /opt/nginx/servik/host2/index.htm (как и хотел).
> 2) При запросе = http://h2.servik.com/ получаю 404 (open() 
> "/opt/nginx/servik/host2/host2/index.htm" failed (2: No such file or 
> directory)).
>
> То есть если файл указан явно, то все ок, если нет, то он находит файл в 
> соответствии с директивой index, но при этом дублирует вставку переменной в 
> результат rewrite.
> Кстати, если каталог host2 удалить, то он говорит уже 404 
> ("/opt/nginx/servik/host2/index.html" is not found (2: No such file or 
> directory)), спотыкаясь, как я понимаю, еще на моменте перед поиском индекса 
> в каталоге.
>
> Короче - ничего не понимаю....

Когда обрабатывается "/", то происходит следюущее:
1) запрос переписывается в /host2/,
2) после этого определяется имя индекса index.htm и делается внутренний
    редирект /host2/index.htm,
4) этот редирект снова проходит через "location /", и снова переписывается
    в /host2/host2/index.htm


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list