ПРОЕКТЫ 


  АРХИВ 


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]

Re: Маска в server name



Так, я похоже разобрался в чем дело... лишний раз убеждаюсь что нельзя
решать вопрос в отрыве от задачи в целом. Общая идея: есть сервер на котором
несколько страничек девелоперов. Называются они *.dev.sample.com (ну
hotel.rexx.dev.sample.com и т д). Разумеется очень не хотелось бы чтобы на
эти странички лазили всяческие боты. Далее. На сервере стоит испманагер и
связка инжинса и апача. Когда мы заводим новый проект испманагер по шаблрну
добавляет в конфиг инжинса запись типа такой:

<------>server {
<------><------>listen 111.111.111.111 80;
<------><------>server_name shop.perov.dev.sample.com;
<------><------>rewrite ^(/manager/.*)$>https://$host$1>permanent;
<------><------>error_page 404 = @fallback;
<------><------>location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/)
{
<------><------><------>proxy_pass http://111.111.111.111:8080;
<------><------><------>proxy_set_header Host $host;
<------><------><------>proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
<------><------><------>proxy_set_header X-Real-IP $remote_addr;
<------><------><------>error_page 403 = @fallback;
<------><------><------>deny all;
<------><------>}
<------><------>location ... {...
<------><------>}
<------><------>location @fallback {
<------><------><------>proxy_pass http://111.111.111.111:8080;
<------><------><------>proxy_set_header Host $host;
<------><------><------>proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
<------><------><------>proxy_set_header X-Real-IP $remote_addr;
<------><------>}
<------>}  

И так далее. В мане инжинса http://nginx.org/ru/docs/http/server_names.html
описан порядок приоритетов в обработке виртуальных серверов:  1. точное имя,
2. самое длинное имя с маской в начале, например ?*.example.org?, 3. самое
длинное имя с маской в конце, например ?mail.*?, 4. первое подходящее
регулярное выражение (в порядке следования в конфигурационном файле). И вот
получается что инжинс наткнувшись на конструкцию типа

server {
<------><------>listen 80;
<------><------>server_name *.dev.sample.com;
<------><------>location = /robots.txt {
<------><------>root /home;
<------><------>}
<------>}

не находит приоритетного точного имени и отдает апачу 404. Как решить
проблему я не знаю пока, решать на уровне апача - неохота, да и не очень
красиво. Да конечно можно править девелоперские сервера сразу после их
создания (так сейчас и делаю) но это тоже паллиатив.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,233961,234007#msg-234007

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.