LINUX.ORG.RU
ФорумAdmin

Nginx: самопроизвольное проксирование


0

2

Доброго времени суток!

Ситуация такая: имеется инфраструктура, на которой крутится сервис из нескольких php-модулей. Имеется свой DNS под bind9 и связка nginx+php-fpm. Когда необходимо завести локацию для нового модуля, я добавляю в /etc/bind/db.example запись вида:

new-module IN      A       12.34.56.78
рестартую bind, завожу локацию /var/www/new-module, добавляю в /etc/nginx/sites/enabled файл со следующим содержимым:
server {
        root /var/www/new-module;
        index index.php;
        server_name new-module.example;

        location ~ \.php$ {
           fastcgi_pass 12.34.56.78:9000;
           include fastcgi_params;
        }
}
Затем делаю service nginx reload и все работает (работало до недавнего времени). Таким образом, накопился список локаций типа
/var/www/new-module1
/var/www/new-module2
...
/var/www/new-module9
/var/www/new-module10
Которые прекрасно работают. Однако недавно потребовалось завести новый модуль, например, /var/www/new-module11. Делаю все по тому же алгоритму, но при открытии в браузере адреса http://new-module11.example вместо ожидаемого отображения индекс файла из /var/www/new-module11 отображается индекс-файл из локации, например, /var/www/new-module6. Дальше интереснее: завожу тестовый урл test.example - только в bind, ничего не прописывая в nginx, ради интереса открываю http://test.example и получаю опять содержимое /var/www/new-module6 ! И так для любого вновь создаваемого урла все запросы неведомым образом проксируются на одну и ту же локацию.

Глобальный конфиг nginx не менялся очень давно (да и вряд ли в нем дело, если даже без всяких изменений в настройках nginx запросы на новые урлы перекидываются в другое место). Но на всякий случай привожу /etc/nginx/nginx.conf

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
    worker_connections 1024;
    multi_accept on;
     use epoll;
}
http {
    keepalive_timeout 65;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
Я даже не представляю, на что грешить, помогите, пожалуйста понять, что за магия происходит.

ЗЫ. При этом в логах nginx такие собщения:

2014/07/09 04:22:10 [error] 9139#0: *2881543 directory index of "/var/www/new-module6" is forbidden, client: хх.хх.хх.хх, server: new-module6.example, request: "GET / HTTP/1.1", host: "test.example"

ну new-module6 оказался дефолтным виртуальным хостом, то есть nginx плохо reloadнулся. Nginx назначает вхост дефолтным из первого по алфавита файла с вхостами. Все запросы на необозначенные домены идут в дефолтный вхост.

Bers666 ★★★★★ ()
Ответ на: комментарий от Incher

в какой то версии nginx у меня похожее было. Попробуй обновить до последней.

Atlant ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.