Re: масс-хостинг и ~homepage

Igor Sysoev is at rambler-co.ru
Tue Mar 7 18:46:30 MSK 2006


On Mon, 27 Feb 2006, Alexander Kuzmin wrote:

> Есть небольшой хостинг под апачем. Сделано на virtuahost, все сервера
> на одном ip. На некоторых серверах используется userdir (/~).
>
> Возникла необходимость поставить перед апачем фронтенд (подсчет
> трафика, некоторая фильтрация и т.д.). По некоторым причинам апач
> вешать на localhost нельзя, посему он был повешен на отдельный порт. В
> качестве фронтенда - nginx 0.3.28 на стандартном порту.
>
> Опять-таки по некоторым (историческим) причинам возникла необходимость
> корректно обрабатывать запросы вида http://vhost1.dom/~homepage - именно
> так, без слэша в конце. Апач такие запросы обрабатывает нормально, а
> вот nginx - нет.
>
> Как можно попроще решить эту задачу? Ниже приведено решение "в лоб" -
> работает, но очень уж некрасиво выглядит. Предполагается, что userdir
> состоит из только букв, цифр, тире и подчерка.
>
> =======================
> http {
> # default server
>  server {
>    listen 10.10.0.1;
>    location / {
>      proxy_set_header Host $http_host;
>      proxy_set_header X-Real-IP $remote_addr;
>      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
>      proxy_pass_request_headers on;
>      proxy_pass_request_body on;
>      proxy_pass  http://10.10.0.1:8000;
>      proxy_redirect default;
>    }
>  }
> # virtualhost with homepages
>  server {
>    listen 10.10.0.1;
>    server_name vhost1.dom www.vhost1.dom;
>    location ~ ^/\~[-0-9a-zA-Z_]+$ {
>      rewrite ^(/~[-0-9a-zA-Z_]+)$ $1/ permanent;
>      proxy_pass  http://vhost1.dom:8000;
>      proxy_redirect default;
>      proxy_set_header Host "vhost1.dom";
>      proxy_set_header X-Real-IP $remote_addr;
>      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
>      proxy_pass_request_headers on;
>      proxy_pass_request_body on;
>    }
>    location / {
>      proxy_pass  http://vhost1.dom:8000;
>      proxy_redirect default;
>      proxy_set_header Host "vhost1.dom";
>      proxy_set_header X-Real-IP $remote_addr;
>      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
>      proxy_pass_request_headers on;
>      proxy_pass_request_body on;
>    }
>  }
> }

Насколько я могу судить из конфига, для запросов /~user выдаётся редирект
/~user/, а все остальные запросы проксируются на бэкенд. Вопрос - почему
бы /~user тоже не проксировать на бэкенд с тем, чтобы он сам выдавал
редиректы ?


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





More information about the nginx-ru mailing list