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
|