LINUX.ORG.RU
ФорумAdmin

Nginx не дружит с Perl

 


0

1

Здравствуйте. У меня следующая проблема: Подключенный к никсу spawncgi сервер ни в какую не хочет обрабатывать perlовку нормально. Точнее, через раз. Hello world он показал, поставил несколько сайтов на перле, ни один не работает. Я уже все перепробовал, и права на все файлы и папки менял (+x стоит)-все равно 403.

###
nginx -V
nginx version: nginx/1.4.2
spawn-fcgi -v
spawn-fcgi v1.6.3 (ipv6) - spawns FastCGI processes (слушает через сокет)
perl -v
This is perl, v5.10.1
Perl::CGI/Perl::FCGI стоят.
###
В логах никса обычно простая 403 (GET /test.pl HTTP/1.1" 403 и 404, но проскакивает и upstream prematurely closed FastCGI stdout while reading response header from upstream. гугл курил, на порт с сокета переводил - ничего не изменилось). В крайнем недоумении, почему он так себя ведет. Неужели придется перекатываться на апач?
#####
location ~ \.(pl|cgi)$
{
gzip off;
try_files $uri =404;
fastcgi_pass unix:/var/run/spawn-fcgi.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_ignore_client_abort off;
}
#####

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  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

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;
#####
FCGI_SOCKET=/var/run/spawn-fcgi.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS="-M 0700"
OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"

Полагаю, вы что-то не так настроили. Из приведенных конфигов и логов не ясно, что.

fcgi точно через сокет настроен? document_root в nginx прописан?

Полную строчку из лога выложите. И тэг поправьте, он у вас один целый.

l0stparadise ★★★★★ ()
    location ~ \.cgi$ {
	fastcgi_pass	unix:/var/run/fcgiwrap.sock-1;
	fastcgi_param	SCRIPT_FILENAME	/var/www/html/$fastcgi_script_name;	
	include        fastcgi_params;						
    }

Вот вам, например, блок из моего cgi конфига. Можете зацитировать все остальные директивы у себя, поправить document_root и попробовать еще раз.

l0stparadise ★★★★★ ()
Последнее исправление: l0stparadise (всего исправлений: 1)
Ответ на: комментарий от l0stparadise

Да, точно через сокет. Я проверял. fcgi передает, никс слушает. 13/09/02 15:25:32 [error] 3349#0: *8 upstream prematurely closed FastCGI stdout while reading response header from upstream, client: 192.168.0.3, server: 1234.pp.ua, request: «GET /test/test.pl HTTP/1.1», upstream: «fastcgi://unix:/var/run/spawn-fcgi.socket:», host: «1234.pp.ua», referrer: "http://1234.pp.ua/test/" При такой ошибке выдает 502. Когда выдает 403 - вот такое: 2013/09/02 20:24:11 [error] 6755#0: *1 open() «/var/www/html/1337club.ru/b/0.memhtml» failed (2: No such file or directory), client: 192.168.0.3, server: 1337club.ru, request: «GET /b/0.memhtml

Wheely ()
Ответ на: комментарий от l0stparadise

Спасибо, попробовал ваш конфиг. С таким конфигом у меня

2013/09/03 00:36:15 [error] 3761#0: *3 directory index of "/var/www/html/1337club.ru/" is forbidden, client: 192.168.0.3, server: 1337club.ru, request: "GET / HTTP/1.1", host: "1337club.ru"

Wheely ()
Ответ на: комментарий от Wheely

По первой ошибке - вероятнее всего, лажа в вашем сайте на perl.

По второй - проверьте - у вас, скорее всего, действительно нет такого файла.

l0stparadise ★★★★★ ()
Ответ на: комментарий от l0stparadise

Это очоба. Я не думаю, что она не работает. Я видел в гугле какие-то самописные скрипты, запускающие fastcgi по-другому, и правда запустили, даже ошибки другие стали. Но я не могу понять, что ему не так.

Wheely ()
Ответ на: комментарий от Wheely

Это означает, что тебя либо не прописано какую страницу отдавать по дефолту, если запрошена директория и запрещёна генерация листинга для неё. Смотри try_files, index и location для них.

P.S. Весь тред не читал.

anonymous ()
Ответ на: комментарий от chegeware

Кстати, пофиксено. Было кривое приложение (у кого-то и оно работало), замена приложения помогла.

Wheely ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.