FastCGI NGINX 权限被拒绝错误

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

答案1

对于遇到同样问题的人。我最初只是创建了一个名为fcgiwrap.socket和 的文件chown www-data fcgiwrap.socket。我没有意识到的是,每当你使用来生成一个 fastcgi 进程时,它都会终止任何先前的套接字并创建一个新的套接字。对我来说,因为我不是 root 用户,所以我必须使用来运行chgrp www-data fcgiwrap.socketchmod g+x fcgiwrap.socketspawnfcgisudospawnfcgi

sudo spawnfcgi -a /usr/sbin/fcgiwrap -s /tmp/fcgiwrap.socket`

正如我所说,这将创建一个新的套接字,更重要的是,在 root 下。因此,只需chmod,chgrp,chown在生成 fastcgi 进程后重新运行,您就应该解决权限被拒绝错误。

相关内容