Назад | Перейти на главную страницу

Ошибка разрешения FastCGI NGINX запрещена

Проблемы с пониманием того, как правильно использовать процессы 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, и вы должны устранить ошибку отказа в разрешении.