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