docs: document NPMplus upload permission fix
This commit is contained in:
@@ -138,6 +138,36 @@ location / {
|
|||||||
|
|
||||||
应用会基于当前请求生成密码重置和注册链接。请确保用户访问的公网域名能够正确转发到该服务。
|
应用会基于当前请求生成密码重置和注册链接。请确保用户访问的公网域名能够正确转发到该服务。
|
||||||
|
|
||||||
|
### NPMplus 上传文件返回 500
|
||||||
|
|
||||||
|
如果小请求可以正常转发,但上传稍大的文件时 Nginx 返回 HTML 格式的 500,先检查 NPMplus 的错误日志:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker exec npmplus sh -lc \
|
||||||
|
"grep -E 'client_body_temp.*Permission denied' /data/nginx/logs/error.log | tail"
|
||||||
|
```
|
||||||
|
|
||||||
|
Nginx 会在请求体超过内存缓冲区后将内容写入 `client_body_temp`。当 NPMplus 以非 root 的 `PUID`、`PGID` 运行,而 `/usr/local/nginx/*_temp` 目录被 root 拥有且权限为 `0700` 时,写入会因权限不足失败并返回 500。可按实际的 `PUID`、`PGID` 修复全部临时目录;下面以 `1000:1000` 为例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker exec -u 0 npmplus sh -lc '
|
||||||
|
for name in client_body_temp proxy_temp fastcgi_temp scgi_temp uwsgi_temp; do
|
||||||
|
chown -R 1000:1000 "/usr/local/nginx/$name"
|
||||||
|
chmod 700 "/usr/local/nginx/$name"
|
||||||
|
done
|
||||||
|
'
|
||||||
|
sudo docker exec -u 1000:1000 npmplus nginx -t
|
||||||
|
```
|
||||||
|
|
||||||
|
不要在 NPMplus 的 Compose 服务中直接设置 `user: 1000:1000`,其启动脚本需要先以 root 初始化,再根据 `PUID`、`PGID` 降权运行。检查 Nginx 配置时也应指定相同的运行账号:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker exec -u 1000:1000 npmplus nginx -t
|
||||||
|
sudo docker exec -u 1000:1000 npmplus nginx -T
|
||||||
|
```
|
||||||
|
|
||||||
|
以 root 身份执行 `nginx -t` 或 `nginx -T` 可能重新改变临时目录属主,使上传故障复发。此问题与 HTTPS、CrowdSec 拦截和 `client_max_body_size` 无关;如果响应为 413 或 403,应分别检查请求体大小限制和访问控制日志。
|
||||||
|
|
||||||
## 测试
|
## 测试
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user