Hello! On Tue, Jan 19, 2016 at 05:46:39PM +0300, Mamontov Roman wrote:
> Добрый день. > > Пытаюсь настроить nginx + php-fpm для подпапки: > > Такая конфигурация работает при cgi.fix_pathinfo=1: > > location /owa { > alias /usr/local/www/vexim/; > try_files $uri $uri/ /index.php; > > location ~ ^/owa(.+\.php)$ { > alias /usr/local/www/vexim$1; > fastcgi_pass php-fpm; > include fastcgi_params; > fastcgi_index index.php; > fastcgi_param SCRIPT_FILENAME > $document_root$fastcgi_script_name; > } > } > > Если поставить cgi.fix_pathinfo=0, то будет ошибка "No input file specified. > [error] 30721#0: *2 FastCGI sent in stderr: "Unable to open primary > script: /usr/local/www/vexim/index.php/owa/index.php (No such file or > directory)" Потому что 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'а. > Если при cgi.fix_pathinfo=1 указать директиву try_files $uri =404, то > получаем ошибку 404. > > Хочется понять, как правильно настроить nginx одновременно с alias и > try_files $uri =404 в location? При использовании try_files совместно с alias, задающим полное имя файла, nginx сейчас пытается трактовать параметры try_files как дополнения к имени, e.g. try_files ".html" =404; Т.е. если хочется совместить alias с полным путём и try_files, проверяющий существование непосредственно запрашиваемого файла, то сейчас надо писать так: alias /path/to/$1; try_files "" =404; Впрочем, лучше alias из внутреннего location'а убрать, как предложено выше, тогда "try_files $uri =404" будет работать штатно. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru