Проблемы с пониманием того, как правильно использовать процессы FastCGI с NGINX. В отличие от Apache, NGINX не запускает процессы FCGI автоматически. Итак, я сначала apt-get fcgiwrap spawn-fcgi
.
Я создал процесс fcgi с помощью команды
sudo spawn-fcgi -f /usr/sbin/fcgiwrap -s /tmp/fcgiwrap.socket
Но я все еще получаю 502 Bad Gateway
в моем браузере и следующая ошибка в моем журнале ошибок NGINX
*68 connect() to unix:/tmp/fcgiwrap.socket failed (13: Permission denied) while connecting to upstream client xxx.xxx.xxx.xxx, server: git.example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/fcgiwrap.socket:", host: "git.example.com"
Приложение cgi - это gitweb, и у меня есть следующая конфигурация NGINX:
server {
listen 443 ssl;
server_name git.example.com;
location /index.cgi {
root /usr/share/gitweb;
include fastcgi_params;
gzip off;
fastcgi_param SCRIPT_NAME $uri;
fastcgi_param GITWEB_CONFIG /etc/gitweb.conf;
fastcgi_pass unix:/tmp/fcgiwrap.socket;
}
location / {
root /usr/share/gitweb;
index index.cgi;
}
ssl_certificate /.../fullchain.pem;
ssl_certificate /.../privkey.pem;
}
Последующий вопрос: если я хочу создать сценарий инициализации для создания fastcgi, например, пример NGINX Вотмне нужно только изменить BIND=/tmp/fcgiwrap.socket
и PHP_CGI=/usr/sbin/fcgiwrap
?
Для тех, у кого такая же проблема. Сначала я просто создал файл с именем fcgiwrap.socket
и chown www-data fcgiwrap.socket
, chgrp www-data fcgiwrap.socket
, chmod g+x fcgiwrap.socket
. Я не понимал, что когда вы используете spawnfcgi
чтобы создать процесс fastcgi, он уничтожает любой предыдущий сокет и создает новый. Для меня, поскольку я не был под root, мне пришлось использовать sudo
бежать spawnfcgi
sudo spawnfcgi -a /usr/sbin/fcgiwrap -s /tmp/fcgiwrap.socket`
Это, как я уже сказал, создаст новый сокет и, что более важно, под root. Так что просто повторите chmod,chgrp,chown
ПОСЛЕ создания процесса fastcgi, и вы должны устранить ошибку отказа в разрешении.