Re: Подпапки, alias и try_files

Mamontov Roman mr.xanto на gmail.com
Чт Янв 21 16:34:40 UTC 2016


Добрый день.

On Wed, Jan 20, 2016, Maxim Dounin wrote:

> Потому что SCRIPT_FILENAME у вас установлен в
> $document_root$fastcgi_script_name, где
>
> - $document_root = /usr/local/www/vexim/index.php, т.к.
>  используется директива alias с полным заданием пути,
>
> - $fastcgi_script_name = /owa/index.php, т.к. это переменная
>  задаёт имя скрипта в пространстве адресов, а не файлов, и
>  соответственно не знает про alias.
>
> Чтобы работало, нужно задать в SCRIPT_FILENAME значение, которое
> бы показывало на правильное имя файла, e.g.:
>
>    fastcgi_param SCRIPT_FILENAME $request_filename;
>
> Отдельно отмечу, что задавать alias во внутреннем location'е в
> nginx 1.9.4+ не надо, он корректно отнаследуется из внешнего
> location'а.

> Впрочем, лучше alias из внутреннего location'а убрать, как
> предложено выше, тогда "try_files $uri =404" будет работать
> штатно.

В общем вот такая конфигурация работает:

        location /owa {
                alias /usr/local/www/vexim/;

                location ~ ^/owa(.+\.php)$ {
                        try_files $uri =404;
                        fastcgi_pass php-fpm;
                        include fastcgi_params;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                }
        }


Спасибо за помощь!


Подробная информация о списке рассылки nginx-ru