【Nginx】Nginx报open() failed (13: Permission denied)解决过程(原创)

在Nginx 1.19.6版本中遇到一个错误页面返回的问题,即无论403还是404错误,都只显示默认的403页面。经过权限设置和进程用户检查,发现worker进程以nobody用户运行时无法访问自定义错误页面。修改配置文件使worker进程以root用户运行后,问题解决。作者怀疑此现象可能与Nginx版本有关,对比1.17.2版本,认为可能是1.19.6版本的一个变化或修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx版本

       1.19.6(mainline version)

       看官若是觉得满意,就请酌情打个赏呗 (^_^)

       

问题背景

       之前帮客户现场搭建了一套Nginx软负载,按照惯例,为Nginx服务配置了403、404错误代码的自定义返回页面。但是,访问测试发现无论是403、还是404错误码,返回的页面都是Nginx自定义的403错误页面,而本地自定义的403.html、404.html页面始终访问不到。

报错信息

       2021/01/04 14:01:04 [error] 27729#0: *6 open() "/xxx/nginx/html/403.html" failed (13: Permission denied), client: 10.xxx.xxx.xxx, server: 10.xxx.xxx.xxx, request: "GET / HTTP/1.1", host: "10.xxx.xxx.xxx"

排查过程:

       第一步,修改html目录的权限为755,修改html目录下的html页面文件的权限为644后,测试针对403、404错误码返回页面,都是nginx自定义的。这显然不是我所期望的结果!

       

       第二步,检查Nginx进程的用户,发现worker process的用户为noboby,因此怀疑是不是worker进程没有权限访问html目录下的文件,因为那些html文件的用户和组都是root。

       nobody   16xx1   29xx1  0  08:23 ?         00:00:00  nginx: worker process
       nobody   16xx2   29xx1  0  08:23 ?         00:00:00  nginx: worker process
       nobody   16xx3   29xx1  0  08:23 ?         00:00:00  nginx: worker process
       nobody   16xx4   29xx1  0  08:23 ?         00:00:00  nginx: worker process
       root         29xx1      1    0  Jan07 ?        00:00:00 nginx: master process ../sbin/nginx

       第三步,修改nginx.conf配置文件,将 #user nobody 修改为 user root,然后reload配置(worker process的用户变为root),再次测试,发现自定义的403、404错误页面可以正常访问和显示了。如下:

       

       

存在的疑问:

       让我感觉到疑惑和不解的是,上面的这个问题在nginx 1.17.2版本上并未出现,也就是说Nginx 1.17.2版本中启动的 worker process 虽然是以 nobody 用户启动和运行的,但是就可以正常访问用户自定义的403、404错误页面。因此,我个人怀疑这个问题可能与Nginx的版本有关。

       如果Nginx 1.17.2版本worker process可以以nobody用户访问自定义的错误页面是正常的,那就说明1.19.6版本出Bug了;

       如果上面所述的情况不正常,那就说明Nginx 1.17.2版本存在垮权限访问的Bug,而Nginx 1.19.6版本修复了这个Bug。

       看官觉得满意,请酌情打个赏呗(^_^)

       

回答: 这个错误提示是由于权限问题导致的。错误信息中指出了"/etc/nginx/nginx.conf"文件的打开失败,原因是权限被拒绝。\[1\]通常,这是因为nginx进程没有足够的权限来读取或写入该文件。解决这个问题的方法是确保nginx进程具有足够的权限来访问该文件。你可以尝试使用chmod命令更改文件的权限,例如"chmod 644 /etc/nginx/nginx.conf"。另外,还要确保nginx进程的运行用户具有访问该文件的权限。你可以通过检查nginx配置文件中的"user"指令来确定nginx进程使用的用户。如果需要,你可以修改该指令以使用具有适当权限的用户。 #### 引用[.reference_title] - *1* *3* [nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)错误解决](https://blog.csdn.net/qq_27508477/article/details/88539756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Nginx错:nginx: [emerg] open() “/usr/local/nginx/../conf/nginx.conf“ failed (2: No such file or ...](https://blog.csdn.net/Dontla/article/details/120964159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cnskylee

技术分享我是认真的,期待您打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值