Nginx

FastCGI NGINX 權限被拒絕錯誤

  • November 7, 2019

無法理解如何正確使用 NGINX 的 FastCGI 程序。與 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 conf 如下:

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;


}

後續問題:如果我想創建一個初始化腳本來生成類似 NGINX 範例的 fastcgi 我只需要更改BIND=/tmp/fcgiwrap.socketPHP_CGI=/usr/sbin/fcgiwrap

對於任何有同樣問題的人。我最初只是創建了一個名為fcgiwrap.socketand 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`

就像我說的那樣,這將創建一個新的套接字,更重要的是,在根目錄下。因此,只需chmod,chgrp,chown在生成 fastcgi 程序後重新執行,您應該解決權限被拒絕錯誤。

引用自:https://serverfault.com/questions/990858