Nginx Perl и виртуальные каталоги

V8
На сайте с 09.04.2011
Offline
16
1791

Написал вот такую конфигурацию. Perl файлики работают на ура.

  location ~ \.pl {

root /var/www;
# gzip off;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location / {
root /var/www;
ssi on;
index index.php index.html;
}

Сейчас появилось желание добавить виртуальную директорию forums по которой должны грузится файлики с /var/www/cgi-bin/forum

    location /forums {

alias /var/www/cgi-bin/forum;
}

Но почему-то ничего не получается, в логах появляется такая ошибка:

2012/09/07 12:22:10 [error] 9138#0: *181 FastCGI sent in stderr: "Cannot chdir to script directory (/var/www/forums)" while reading response header from upstream, client: 192.168.1.102, server: localhost, request: "GET /forums/fins.pl HTTP/1.1", upstream: "fastcgi://127.0.0.1:9001", host: "192.168.1.100"

Подскажите пожалуйста, что я не так делаю?

iHead
На сайте с 25.04.2008
Offline
137
#1

location, заданный с помощью рег. выражения обрабатывается раньше обычного.

если надо, чтобы обычный location имел приоритет над регулярным, надо написать так:

location ^~ /forums {

...

}

хотя в вашем случае, наверное, симлинка хватило бы.

еще можно попытаться root поменять в нужном location.

PS

на 127.0.0.1:9001 что слушает (т.е. каким FastCGI-менеджером пользуетесь)?

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
V8
На сайте с 09.04.2011
Offline
16
#2

  location ^~ /forums {

alias /var/www/cgi-bin/forum;
}

iHead, такой вариант не помог. В таком случае сервер предлагает скачать Perl файл.

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

    location ^~ /forums {

root /var/www/cgi-bin/forum;
}

В таком случае появляется ошибка "404 Not Found".

Посоветуйте пожалуйста что-то еще.

PS
на 127.0.0.1:9001 что слушает (т.е. каким FastCGI-менеджером пользуетесь)?

У меня все бежит на ARM ArchLinux. Использую fcgiwrap.

Конфиг: /etc/conf.d/fcgiwrap

SPAWNER='/usr/bin/spawn-fcgi'


FCGI_ADDRESS='127.0.0.1'
FCGI_PORT='9001'
FCGI_USER='http'
FCGI_GROUP='http'
FCGI_EXTRA_OPTIONS=''

SPAWNER_ARGS="-a $FCGI_ADDRESS -p $FCGI_PORT -u $FCGI_USER -g $FCGI_GROUP $FCGI_EXTRA_OPTIONS -- /usr/sbin/fcgiwrap"
iHead
На сайте с 25.04.2008
Offline
137
#3

видимо, надо добавить еще директивы fastcgi_*, иначе как статика оно и будет обрабатываться.

rewrite пробовали?

V8
На сайте с 09.04.2011
Offline
16
#4
iHead:
видимо, надо добавить еще директивы fastcgi_*, иначе как статика оно и будет обрабатываться.

rewrite пробовали?

Покажите пожалуйста в примерах 1 идею и rewrite.

iHead
На сайте с 25.04.2008
Offline
137
#5

с location не все так просто. в итоге надо сформировать правильные значения для DOCUMENT_ROOT и SCRIPT_NAME.

с rewrite:

перед "location ~ \.pl {" добавьте:

rewrite ^/forums(.*) /cgi-bin/forum$1 last;

V8
На сайте с 09.04.2011
Offline
16
#6

iHead, спасибо большое. Rewrite помог решить проблему.

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