发布于 

Nginx请求转发失败(Permission denied)

今天在内网服务器装了一个 Nginx,准备用来转发自己写的一个服务,部署好前端后,访问却提示服务器错误。

F12 一看接口报 500 了。

直接通过后台接口地址访问,不经过 Nginx,是能正常访问的,所以推测问题出在 Nginx。

一看 Nginx 日志,果然。

1
2023/10/14 19:44:25 [alert] 14456#14456: *19 socket() failed (13: Permission denied) while connecting to upstream, client: 192.168.1.5, server: , request: "POST /api/collection/list HTTP/1.1", upstream: "http://127.0.0.1:8090/api/collection/list", host: "192.168.1.9:8803", referrer: "http://192.168.1.9:8803/"

提示没有权限。

百度了一下,发现是运行 Nginx 的用户的原因。

1
2
3
4
5
6
7
8
www-data 14450  0.0  0.0  59092  2980 ?        S    19:44   0:00 nginx: worker process
www-data 14451 0.0 0.0 59092 2980 ? S 19:44 0:00 nginx: worker process
www-data 14452 0.0 0.0 59092 3548 ? S 19:44 0:00 nginx: worker process
www-data 14453 0.0 0.0 59092 2980 ? S 19:44 0:00 nginx: worker process
www-data 14454 0.0 0.0 59092 2980 ? S 19:44 0:00 nginx: worker process
www-data 14455 0.0 0.0 59092 2980 ? S 19:44 0:00 nginx: worker process
www-data 14456 0.0 0.0 59092 3352 ? S 19:44 0:00 nginx: worker process
www-data 14457 0.0 0.0 59092 3516 ? S 19:44 0:00 nginx: worker process

估计这个用户缺了什么权限,简单起见,直接修改 /etc/nginx/nginx.conf

user www-data 改成 user root ,使用 root 用户运行。

然后:

1
2
nginx -s stop # 停止
nginx # 启动

搞定!