当前位置:首页 » nginx技术知识

nginx 代理tomcat 访问上传后图片显示问题

2016-01-05 11:42 本站整理 浏览(14)

nginx error log

2016/01/05 10:55:28 [crit] 15049#0: *143858 open() "nginx/proxy_temp/2/12/0000000122" failed (13: Permission denied) while reading upstream, client: 127.0.0.1, server: api.abc.com, request: "GET /image/690/1451876181382.jpg HTTP/1.0", upstream: "http://127.0.0.1/image/690/1451876181382.jpg", host: "api.abc.com"

原因是因为:

运行nginx 进程用户nobody 没有nginx安装目录/proxy_temp 文件的写入权限‘

原来是 nginx 的工作进程对大文件做了缓存,这个缓存在 %nginx%/proxy_temp 目录下,主进程在读取缓存的时候由于权限问题而无法访问。ps nginx 可以看出主进程用户是 webapp(启动 nginx 的用户),工作者进程是 nobody 用户(nginx 默认的工作者用户就是 nobody,如果你没有配 user 指令的话),proxy_temp 目录所有者就是工作者进程的用户(可以 ll proxy_temp 对此进行验证)。

停止 nginx(nginx -s stop),chown -R 对 nginx 所有目录权限重新设定成 webapp,然后在 nginx.conf 的 worker_processes 指令前添加指令

user webapp webgroup;最后 webapp 用户重启 nginx 即可

############################

添加nginx 运行用户的时,报错;

[emerg]: getgrnam(“presmini”) failed in /opt/nginx/conf/nginx.conf:1

检查nginx 目录,是否已经更改了 属组,和属主 chown -R webapp:webgroup /usr/local/nginx/

原因没有配置 nginx.conf 中user 的组,添加上user用户 和 组 ,解决问题

如 webapp 用户,webgroup 所属组