套接字 – Nginx connect()到unix:/var/run/fcgiwrap.socket失败
我正在尝试在我的Nginx服务器上安装Gitweb.似乎所有东西都配置正确,但我似乎在gitweb.log中收到以下错误:
2015/06/08 08:42:05 [crit] 29135#0: *5 connect() to unix:/var/run/fcgiwrap.socket failed (13: Permission denied) while connecting to upstream, client: 83.36.85.6, server: git.mydomain.co.uk, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "git.mydomain.co.uk"
检查了所有者/权限,似乎一切都很好.
srwxr-xr-x 1 www-data www-data 0 Jun 8 08:44 /var/run/fcgiwrap.socket
ps aux | grep nginx
root 30283 0.0 0.0 90552 1296 ? Ss 08:59 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
forge 30284 0.0 0.0 90884 1924 ? S 08:59 0:00 nginx: worker process
forge 30285 0.0 0.1 90884 2408 ? S 08:59 0:00 nginx: worker process
root 30528 0.0 0.0 11980 928 pts/0 R+ 09:03 0:00 grep --color=auto nginx
套接字必须是客户端和服务器可读写的.假设服务器作为www-data运行并且客户端以group forge运行伪造,以下步骤应该解决问题.
将套接字的组所有权更改为用户forge组.
chgrp forge /var/run/fcgiwrap.socket
更改组权限以允许写入组伪造.
chmod g+w /var/run/fcgiwrap.socket
套接字现在可由服务器和客户端读写.
Linux的环境中如何生成srw-rw---- 的文件权限?
文件属性
- d 开头是: 目录文件。
- l 开头是: 符号链接(指向另一个文件,类似于瘟下的快捷方式)。
- s 开头是: 套接字文件(sock)。
- b 开头是: 块设备文件,二进制文件。
- c 开头是: 字符设备文件。
- p 开头是: 命名管道文件。
创建套接字文件
nc -Ul sock
文件权限
r = 4
w = 2
x = 1
chmod 660 sock
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。