zoukankan      html  css  js  c++  java
  • nginx进程所属用户问题讨论

    结论

    1,在非root账户下启动时,nignx的master和worker进程的用户都将是这个账户,
    2,在root账户下启动时 nignx的master进程是用户是root,worker的用户在conf已配置用户的情况下,owner是配置的用户,否则将是nobody,而且也可能导致nginx的一些文件的owner也是nobody。

    问题探讨

    A主机安装NFS server,共享出来某些目录给B主机使用
    A主机中的配置

    /usr/local/nginx/html/ *(insecure,rw,sync,no_root_squash)
    

    B主机安装有NFS clinet 和nginx,还有其他应用

    B主机挂载A主机提供的共享目录

    mount -t nfs -o nolock,vers=4 10.0.0.243:/usr/local/nginx/html/ /usr/java/tomcat-7.0.92/webapps/ROOT/kjactive/appimg
    

    B主机安装的nginx,配置文件中关于用户的配置是注释状态

    #user  nobody;
    

    进程用户如下:

    root      12345      1  0 Jan17 ?        00:00:00 nginx: master process ./nginx
    nobody   755782  12345  0 Jun23 ?        00:02:26 nginx: worker process
    nobody   755783  12345  0 Jun23 ?        00:28:39 nginx: worker process
    

    B主机上安装有后台应用,通过B主机上的nginx可以正常访问,然后在后台上传图片,实际存储到A主机的共享目录下,存储的图片权限是:

    -rw-r----- 1 root root  21126 Jul  6 16:43 202107061643095807470.png
    

    但是通过nginx却无法访问图片,提示:403 无权限

    分析

    使用root用户启动的nginx,但是nginx配置文件中关于user 的配置是注释状态,这样的情况正好对应开头的结论2。master进程的用户是root,但是worker进程用户是nobody,再联想到上传的图片权限是"-rw-r-----",那肯定就无法访问图片了。

    解决办法也是根据结论2,修改nginx配置文件中关于user的配置,修改成:user root;,这样一来,master进程和worker进程的用户都是root,这样就能访问到图片了。

    root      12345      1  0 Jan17 ?        00:00:00 nginx: master process ./nginx
    root     605188  12345  0 16:50 ?        00:00:01 nginx: worker process
    root     605189  12345  0 16:50 ?        00:00:00 nginx: worker process
    
  • 相关阅读:
    数字图像处理(一)之灰度转换和卷积python实现
    ArcEngine+C# 森林资源仿真系统 核心代码
    Dijkstra和Floyd算法遍历图的核心
    python像操作文件一样操作内存的模块 StringIO
    python操作Redis方法速记
    python中时间处理标准库DateTime加强版库:pendulum
    utittest和pytest中mock的使用详细介绍
    《金字塔原理》 读书笔记
    python轻量级orm框架 peewee常用功能速查
    docker中安装的mysql无法远程连接问题解决
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14977799.html
Copyright © 2011-2022 走看看