Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Nginx + PHP в режиме FastCGI. Не о тдаются *.php странички
On Sat, Dec 12, 2009 at 03:08:08PM -0500, xintrea wrote:
> Поставил себе в виртуалку Ubuntu 9.04 Server. Настроил внутри виртуалки и
> снаружи, чтобы она отвечала на IP 192.168.1.5. Установил пакеты
>
> php5-cgi
> nginx
>
> Настроил запуск PHP5 в режиме FastCGI и Nginx. Когда Nginx и PHP запущены,
> есть процессы:
>
>
> root 2431 pts/1 S 16:22 sh -c /bin/su -m -c "/usr/bin/php5-cgi -q -b 127
>
> www-data 2432 pts/1 S 16:22 /bin/su -m -c /usr/bin/php5-cgi -q -b 127.0.0.1:
>
> www-data 2435 pts/1 S 16:22 sh -c /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> www-data 2436 ? Ss 16:22 /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> www-data 2437 ? S 16:22 /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> www-data 2438 ? S 16:22 /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> www-data 2439 ? S 16:22 /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> www-data 2440 ? S 16:22 /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> www-data 2441 ? S 16:22 /usr/bin/php5-cgi -q -b 127.0.0.1:8888
> root 2599 ? Ss 16:38 nginx: master process /usr/sbin/nginx
> www-data 2600 ? S 16:38 nginx: worker process
>
>
> В браузере хост-машины ввожу http://192.168.1.5 и вижу стартовую страницу
> Nginx, т.е. содержимое файла index.html в каталоге /var/www/nginx-default.
>
> В браузере я могу смотреть любые созданные мной *.html странички, nginx их
> отдает. А вот *.php-скрипты не работают, вместо них показывается содержимое
> файла /var/www/nginx-default/50x.html
>
> Я проверил, выполняются ли вообще php-скрипты. Команда
> php5-cgi script.php
> скрипт выполняет.
>
> То есть, толи nginx не передает запросы на FastCGI порт, толи PHP не
> принимает запросы, толи PHP не отдает запросы обратно, толи nginx не
> принимает ответ от FastCGI порта, толи принимает, но не отдает на HTTP порт.
>
> Дело осложняется тем, что документации по синтаксису и сруктуре файла
> настройки nginx до сих пор не существует. Есть документация по опциям
> модулей, но этого мало. Поэтому целенаправленно отконфигурировать nginx я не
> могу, все приходится делать методом тыка.
>
> Конфигурация nginx сейчас такая.
>
>
> Файл /etc/nginx/nginx.conf:
>
>
> user www-data;
> worker_processes 1;
>
> error_log /var/log/nginx/error.log;
> pid /var/run/nginx.pid;
>
> events {
> worker_connections 1024;
> }
>
> http {
> include /etc/nginx/mime.types;
> default_type application/octet-stream;
>
> access_log /var/log/nginx/access.log;
>
> sendfile on;
> #tcp_nopush on;
>
> #keepalive_timeout 0;
> keepalive_timeout 65;
> tcp_nodelay on;
>
> gzip on;
>
> include /etc/nginx/conf.d/*.conf;
> include /etc/nginx/sites-enabled/*;
> }
>
>
>
> Файл /etc/nginx/sites-enabled/default:
>
>
> server {
> listen 80;
> server_name localhost;
>
> access_log /var/log/nginx/localhost.access.log;
>
> location / {
> root /var/www/nginx-default;
> index index.html index.htm;
> }
>
> location /doc {
> root /usr/share;
> autoindex on;
> allow 127.0.0.1;
> deny all;
> }
>
> location /images {
> root /usr/share;
> autoindex on;
> }
>
> #error_page 404 /404.html;
>
> # redirect server error pages to the static page /50x.html
> #
> error_page 500 502 503 504 /50x.html;
> location = /50x.html {
> root /var/www/nginx-default;
> }
>
> # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
> #
> location ~ \.php$ {
> root /var/www;
> # fastcgi_pass localhost:8888;
> fastcgi_pass 127.0.0.1:8888;
> fastcgi_index index.php;
> # fastcgi_param SCRIPT_FILENAME
> /scripts$fastcgi_script_name;
> fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
> include fastcgi_params;
> }
>
> }
>
>
>
> Файл /etc/nginx/fastcgi_params:
>
>
> fastcgi_param QUERY_STRING $query_string;
> fastcgi_param REQUEST_METHOD $request_method;
> fastcgi_param CONTENT_TYPE $content_type;
> fastcgi_param CONTENT_LENGTH $content_length;
>
> fastcgi_param SCRIPT_NAME $fastcgi_script_name;
> fastcgi_param REQUEST_URI $request_uri;
> fastcgi_param DOCUMENT_URI $document_uri;
> fastcgi_param DOCUMENT_ROOT $document_root;
> fastcgi_param SERVER_PROTOCOL $server_protocol;
>
> fastcgi_param GATEWAY_INTERFACE CGI/1.1;
> fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
>
> fastcgi_param REMOTE_ADDR $remote_addr;
> fastcgi_param REMOTE_PORT $remote_port;
> fastcgi_param SERVER_ADDR $server_addr;
> fastcgi_param SERVER_PORT $server_port;
> fastcgi_param SERVER_NAME $server_name;
>
> # PHP only, required if PHP was built with --enable-force-cgi-redirect
> fastcgi_param REDIRECT_STATUS 200;
>
>
> PHP-файлы размещаю в каталоге /var/www. Там два файла - index.php и
> phpinfo.php. В браузере обращаюсь к ним как http://192.168.1.5/index.php и
> http://192.168.1.5/phpinfo.php. В момент обращения к этим страницам, в файле
> /var/log/nginx/error.log имею следующие записи:
>
>
> 2009/12/10 18:57:26 3719#0: *1 upstream prematurely closed connection while
> reading response header from upstream, client: 192.168.1.2, server:
> localhost, request: "GET /index.php HTTP/1.1", upstream:
> "fastcgi://127.0.0.1:8888", host: "192.168.1.5"
> 2009/12/10 18:57:33 3719#0: *1 upstream prematurely closed connection while
> reading response header from upstream, client: 192.168.1.2, server:
> localhost, request: "GET /phpinfo.php HTTP/1.1", upstream:
> "fastcgi://127.0.0.1:8888", host: "192.168.1.5"
>
>
>
> Вопрос. Как отконфигурировать nginx, чтобы он начал отдавать результаты
> работы php скриптов?
С конфигурцией всё нормально. PHP почему-то ничего не отдаёт: "upstream
prematurely closed connection while reading response header from upstream".
Скорее всего, процесс, обрабатывающий запрос, падает. Можно посмотреть
не меняются ли номера процессов php5-cgi. Ну или в логах системных логах.
--
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|