ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx+php-fpm



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
> 
> 



 




Copyright © Lexa Software, 1996-2009.