нет связки nginx и fastcgi

K
На сайте с 11.04.2012
Offline
1
1574

Приветствую.

Вот такая удивительная проблема на vps, может кто подскажет, а то на форуме Сысоева как-то всё тухло для русских.

Коротко: nginx отдаёт только статику, php выдаётся в виде файлов.

Софт: Gentoo Linux 2.6.18, nginx 1.0.14, php-fpm 5.3.10

Установка проведена так:

USE="fpm" emerge -av dev-lang/php

USE="fastcgi" emerge -av www-servers/nginx

В /etc/php/fpm-php5.3/php-fpm.conf наличествует такие строчки:

listen = 127.0.0.1:9000

;listen = /var/run/php/fcgi-php.sock

(про юникс-сокет в курсе, с ним ситуация не меняется, а локалхост проще в диагностике).

При запущенном php-fpm пакеты на порт принимаются:

wget http://127.0.0.1:9000


--2012-04-12 04:23:54-- (try: 6) http://127.0.0.1:9000/
Connecting to 127.0.0.1:9000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.

nginx настраивался как только не как...

На данный момент конфа /etc/nginx/nginx.conf в части сервера такова:

        server {

listen 127.0.0.1;
server_name localhost;

access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;

root /var/www/localhost/htdocs;
location / {
try_files $uri $uri/ @drupal;
}
location @drupal {
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php/fcgi-php.sock;
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_sc$
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
#include fastcgi_params;
}
}

Это для друпала Сысоев здесь подсказал: http://sysoev.ru/nginx/docs/faq.html

Пробовал и такое:

location ~ \.php$ {

#fastcgi_pass 127.0.0.1:9000; # через tcp/ip
fastcgi_pass unix:/var/run/php/fcgi-php.sock; # через юникс-сокеты
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

И даже location /

Результат одинаков во всех вариантах: nginx тупо и беспощадно выдаёт php статикой.

Что настораживает, netstat -a -p выдаёт следующее:

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:9000 *:* LISTEN 3389/php-fpm.conf)
tcp 0 0 *:http *:* LISTEN 9385/nginx.conf
tcp 0 0 *:1234 *:* LISTEN 23679/1gb.lighttpd
tcp 0 0 *:ftp *:* LISTEN 23881/vsftpd
tcp 0 0 *:ssh *:* LISTEN 23605/sshd

То есть, как я понимаю, то ли nginx не желает определять php, хотя конфиг с официального сайта (и неофициальных, впрочем, тоже), то ли кто-то очень тупой и не может до очевидной вещи догадаться.

Есть идеи?

P
На сайте с 16.03.2009
Offline
144
#1

Если у тебя через tcp то так:

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # через tcp/ip
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Плюс логи смотри, что nginx пишет.

K
На сайте с 11.04.2012
Offline
1
#2
poiuty:
Если у тебя через tcp то так:

Плюс логи смотри, что nginx пишет.

Именно так изначально и было сделано, потом уже под друпал запилил римейк.

В логе /var/log/nginx пусто, лишь запросы...

H
На сайте с 01.04.2012
Offline
15
#3
klalofudo:

Установка проведена так:
USE="fpm" emerge -av dev-lang/php

USE="fastcgi" emerge -av www-servers/nginx

Запустите еще раз "USE="fastcgi" emerge -av www-servers/nginx" и посмотрите внимательно вывод перед тем как нажимать Yes ;)

А лучше и нам его покажите.

SI
На сайте с 03.12.2007
Offline
130
#4
klalofudo:
а то на форуме Сысоева как-то всё тухло для русских.

Русские в рассылке

http://mailman.nginx.org/pipermail/nginx-ru/

http://www.lexa.ru/nginx-ru/

-= Онлайн сервисы =-
Andreyka
На сайте с 19.02.2005
Offline
822
#5

Если php выдается в виде исходного файла то есть 2 варианта:

1) php отдается самим nginx

2) бакенд отдает его таким

Как проверить? Отключить бакенд и запросить файл

Если он будет отдан - значит вариант 1. Если нет - вариант 2.

Не стоит плодить сущности без необходимости
K
На сайте с 11.04.2012
Offline
1
#6
horofag:
Запустите еще раз "USE="fastcgi" emerge -av www-servers/nginx" и посмотрите внимательно вывод перед тем как нажимать Yes ;)
А лучше и нам его покажите.


Calculating dependencies... done!
[ebuild R ] www-servers/nginx-1.0.14 USE="http http-cache pcre ssl vim-syntax -aio -debug -ipv6 -libatomic" NGINX_MODULES_HTTP="access auth_basic autoindex browser charset empty_gif fastcgi geo gzip limit_req limit_zone map memcached proxy referer rewrite scgi split_clients ssi upstream_ip_hash userid uwsgi -addition -cache_purge -dav -degradation -flv -geoip -gzip_static -headers_more -image_filter -mp4 -passenger -perl -push -random_index -realip -secure_link -slowfs_cache -stub_status -sub -upload -upload_progress -xslt" NGINX_MODULES_MAIL="-imap -pop3 -smtp" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

Благодарю за ссылки.

---------- Добавлено 12.04.2012 в 15:28 ----------

Andreyka:
Если php выдается в виде исходного файла то есть 2 варианта:
1) php отдается самим nginx
2) бакенд отдает его таким

Как проверить? Отключить бакенд и запросить файл
Если он будет отдан - значит вариант 1. Если нет - вариант 2.

Вариант 1. После отключения php-fpm делал


root@vz24585:~# nc -l -p 9000 -v
listening on [any] 9000 ...

...и тишина, любые запросы извне nginx на порт не передаёт.

У меня есть ещё, правда, предположение, может это свежепоставленный baselayout c openrc гадят? etc-update делал, если что.

D3
На сайте с 31.05.2009
Offline
39
DJ3
#7

Вместо

try_files $uri $uri/ @drupal;

попробуйте использовать

try_files $uri @drupal;
M
На сайте с 16.09.2009
Offline
278
#8
klalofudo:

Это для друпала Сысоев здесь подсказал: http://sysoev.ru/nginx/docs/faq.html

Это только часть конфигурации для drupal. Смотрите вику nginx, если вам нужны примеры на уровне копипаста.

klalofudo:

Результат одинаков во всех вариантах: nginx тупо и беспощадно выдаёт php статикой.

Так его настроили. Тупо и беспощадно :)

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
gagarin123
На сайте с 23.01.2008
Offline
137
#9

Настраивал на хостинге связку nginx+php-fpm для joomla, для себя писал памятку с порядком установки и настройки.

Красным отметил строку, которая у вас закомментирована:

location ~ \.php$ {

include fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Посмотреть рабочие конфиги можно по ссылке в начале коммента.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий