• 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
    
  • 相关阅读:
    软件工程-案例分析作业 开源代码托管平台
    软件工程-个人阅读作业 #2
    软件工程-个人阅读作业 #1
    提问回顾与个人总结
    软工案例分析作业
    结对编程——第二阶段
    软工个人阅读作业#2
    软工个人阅读作业#1
    OO补给站总结
    BUAA_2021_SE_Final_Report
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14977799.html
Copyright © 2020-2023  润新知