ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

????-??????? ? ~homepage



Приветствую сообщество.

Посоветуйте дельное, пожалуйста.

Есть небольшой хостинг под апачем. Сделано на 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;
    }
  }
}

=======================

Александр Кузьмин.
---



 




Copyright © Lexa Software, 1996-2009.