Welcome! Log In Create A New Profile

Advanced

Nginx + PHP в режиме FastCGI. Не отдаются *.php странички

December 12, 2009 03:08PM
Поставил себе в виртуалку Ubuntu 9.04 Server. Настроил внутри виртуалки и снаружи, чтобы она отвечала на IP 192.168.1.5. Установил пакеты

php5-cgi
nginx

Настроил запуск PHP5 в режиме FastCGI и Nginx. Когда Nginx и PHP запущены, есть процессы:

[code]
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
[/code]

В браузере хост-машины ввожу http://192.168.1.5 и вижу стартовую страницу Nginx, т.е. содержимое файла index.html в каталоге /var/www/nginx-default.

В браузере я могу смотреть любые созданные мной *.html странички, nginx их отдает. А вот *.php-скрипты не работают, вместо них показывается содержимое файла /var/www/nginx-default/50x.html

Я проверил, выполняются ли вообще php-скрипты. Команда
[code]php5-cgi script.php[/code]
скрипт выполняет.

То есть, толи nginx не передает запросы на FastCGI порт, толи PHP не принимает запросы, толи PHP не отдает запросы обратно, толи nginx не принимает ответ от FastCGI порта, толи принимает, но не отдает на HTTP порт.

Дело осложняется тем, что документации по синтаксису и сруктуре файла настройки nginx до сих пор не существует. Есть документация по опциям модулей, но этого мало. Поэтому целенаправленно отконфигурировать nginx я не могу, все приходится делать методом тыка.

Конфигурация nginx сейчас такая.


Файл [b]/etc/nginx/nginx.conf[/b]:

[code]
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/*;
}
[/code]


Файл [b]/etc/nginx/sites-enabled/default[/b]:

[code]
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;
}

}
[/code]


Файл [b]/etc/nginx/fastcgi_params[/b]:

[code]
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;
[/code]

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 имею следующие записи:

[code]
2009/12/10 18:57:26 [error] 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 [error] 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"
[/code]


[b]Вопрос[/b]. Как отконфигурировать nginx, чтобы он начал отдавать результаты работы php скриптов?
Subject Author Posted

Nginx + PHP в режиме FastCGI. Не отдаются *.php странички

xintrea December 12, 2009 03:08PM

Re: Nginx + PHP в режиме FastCGI. Не отдаются *.php странички

Igor Sysoev December 12, 2009 03:36PM

Re: Nginx + PHP в режиме FastCGI. Не отдаются *.php странички

xintrea December 12, 2009 05:55PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 293
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready