nginx+php-fpm
Maxim Dounin
mdounin at mdounin.ru
Sun Sep 27 00:16:30 MSD 2009
Hello!
On Sat, Sep 26, 2009 at 03:18:18PM -0400, deeman wrote:
> Здравствуйте!
>
> Поставил на свой сервер Ubuntu 9.04, потом связку nginx + php-fpm руководствуясь статьей http://vkimo.org/content/nginxphp-fpmeaccelerator-perfect-linux-server
> Скачал исходники nginx,php,php-fpm, собрал все, конфигурационные файлы сделал как в статье, автозапуск настроил, вроде бы все работает, но есть вопросы, которые я сходу решить не могу.
>
> 1) при обращении к site.com/info.php при условии, что файл info.php существует в соответствующей папке (/var/www/site.com), все отрабатывает нормально. Если же файла нет, то выдается не страница 404, а ошибка:
>
> Warning: Unknown: Filename cannot be empty in Unknown on line 0
>
> Fatal error: Unknown: Failed opening required '' (include_path='.:/usr/local/lib/php') in Unknown on line 0
>
> то есть как я понимаю, для обработки почему то передается пустой SCRIPT_FILENAME, хотя nginx должен сразу же выдать 404
Кто кому должен выдавать 404? У вас в конфиге написано что все
uri заканчивающиеся на .php следует передавать для обработки
fastcgi приложению. Именно это и происходит. Дальше уже дело
fastcgi приложения что именно на какой uri вернуть.
Что до SCRIPT_FILENAME, то он будет ровно таким как вы сказали в
fastcgi_params.
> 2) Если обратиться по адресу www.site.com (добавив поддомен www) то вылетает 404 страница
В root у вас фигурирует $host. Вероятно, каталога
/var/www/www.site.com не существует.
> 3) Если обратиться по адресу site.com/test/ ( / на конце ) при условии что подпапка test существует, то все ок. Если же слеш убрать то происходит редирект на http://www._.com/test/ который соответственно не определяется.
"www." и ".com" - это ваш браузер добавляет, nginx делает редирект
на http://$server_name/test/.
Если server_name не соответствует тому имени, на которе следует
делать редиректы при возникновении такой необходимости - надо
использовать
server_name_in_redirect off;
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server_name_in_redirect
Maxim Dounin
>
> Часть моего nginx.conf
>
> server {
> listen 80;
> root /var/www/$host;
> server_name _;
>
> location / {
> root /var/www/$host;
> index index.html index.htm index.php;
> }
>
> error_page 500 502 503 504 /50x.html;
> location = /50x.html {
> }
>
> location ~ \.php$ {
> root /var/www/$host;
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_index index.php;
> include /usr/local/nginx/conf/fastcgi_params;
> }
> }
>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,9401,9401#msg-9401
>
>
More information about the nginx-ru
mailing list