Nginx и / или php5-fpm запоминают символическую корневую директорию

Мой корень сайта nginx указывает на символическую ссылку. Если я изменяю символическую ссылку (или развертываю новую версию веб-сайта), старая версия скрипта php продолжает появляться. Это пахнет как кеш или ошибка.

Сначала это выглядело так, как будто Nginx кэшировал каталог с символическими ссылками, но перезагрузка / перезапуск / убийство и запуск nginx не сделалиЯ решил перезапустить php5-fpm - это исправило мою проблему.

Но я не хочу перезапускать nginx и / или php5-fpm после развертывания - я хочу знать, почему существует такой кеш (или ошибка), и почему он не 'не работает должным образом.

Полезная информация:

ОС: Ubuntu 13.10 (GNU / Linux 3.8.0-19-generic x86_64)Nginx: через ppa: nginx / stablePHP: через ppa: ondrej / php5 (php5-fpm)

Конфигурация сайта Nginx:

root /home/rob/sandbox/deploy/public/;
index index.php index.html index.htm;
location / {
    try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass php;
}

Конфигурация сервера Nginx (частично, остальное по умолчанию):

http {
    sendfile off;
    upstream php {
        server unix:/var/run/php5-fpm.sock;
    }
}

Дерево для / дома / грабить / песочница:

├── deploy -> web2
├── web1
│   └── public
│       └── index.php (echo ONE)
└── web2
    └── public
        └── index.php (echo TWO)
запрос:http://localhost/index.phpожидаемый ответ: ДВАФактический ответ: ОДИН

Часть вывода изrealpath_cache_get()

[/home/rob/sandbox/deploy/public/index.php] => Array (
    [key] => 1.4538996210143E+19
    [is_dir] => 
    [realpath] => /home/rob/sandbox/web2/public/index.php
    [expires] => 1383730041
)

Так это значитdeploy/public/index.php правильно связан сweb2/public/index.php, право? Ну, даже с правильными путями в списке realpath_cache, респон все еще ОДИН.

Послеrm deploy а такжеln -s web2 deploy Nginx был перезапущен, эффекта нет. Перезапуск php5-fpm после этого дает ожидаемый ответ:ДВА'.

Это'Приятно знать, что помимо файлов index.php я провел несколько тестов с файлами .css и .js. После удаления и повторного создания символической ссылки с / на web1 и web2, nginx ответит правильным содержимым файлов.

Что я пропустил, что я не вижу?

Ответы на вопрос(3)

Ваш ответ на вопрос