nginx报错 open() failed (13 permission denied)

2 篇文章 0 订阅
1 篇文章 0 订阅

一、问题说明

最近在学习nginx,遇到一个问题

在浏览器键入 http://192.168.21.161:1234/video/aaa.mp4

访问虚拟机(191.168.21.161)的nginx资源时报如下错误:

2019/08/27 03:50:38 [error] 1453#0: *19 open() "/root/video/aaa.mp4" failed (13: Permission denied), client: 192.168.21.1, server: lsc.com, request: "GET /video/aaa.mp4 HTTP/1.1", host: "192.168.21.161:1234", referrer: "http://192.168.21.161:1234/video/aaa.mp4"

这是我的server设置 ,nginx安装目录为/usr/local/nginx

server {
	listen 1234;
	server_name lsc.com;
	
	location / {
		root lsc.com;
		index index.html;
	}
	
	location /video {
		root /root
		index aaa.mp4;
	}
	
	# 这种写法和上面的匹配的路径是一样的
	# location /video {
	# 	alias /root/video
	# 	index aaa.mp4;
	# }
	
	location 
}

报错很明确,open() "/root/video/aaa.mp4" failed (13: Permission denied),因为没有aaa.mp4的权限,所以无法打开

但是我检查了一下aaa.mp4文件的权限,有读取文件的权限啊,为什么说Permission denied呢?

这个是nginx进程信息

nginx.conf中我没有设置user,nginx启动的用户/用户组就是默认的nobody/nobody

 

二、解决过程

我在浏览器中访问其实相当于以nobody用户去访问linux上的/root/video/aaa.mp4。

这块权限我没太理解,然后google了下,

然后,我检查了下/root文件夹,/video文件夹的权限

主要看最后3位(other),video权限没问题(有rx),root都是-,说明没有权限

所以解决方法就是,chmod o+rx /root

 

等等,不是只要有r的权限就可以了吗,为什么还要加上x?我开始也是这么想的,经过实践发现必须得加x才行(其实上面那段英文回答已经说的很清楚了,这里我想把知识和我以前看过的东西串联起来,又去翻了下之前看过的书)

好几年前我刚接触linux的时候,把电子版《鸟哥的linux私房菜》70%左右章节都看过并实践了。现在想起来当时在看权限那个部分,有一段话,当时没完全理解,所以现在才会产生这样的疑问。我现在把官网(文章链接见文末)上的那一段截个图出来:

解决该问题的关键点:

用户在拥有什么权限的情况下能够读取一个目录下的文件?使用者要对该目录有x权限(也就是能够让该目录成为工作目录,能cd过去),然后还要r的权限

 

参考链接:

https://stackoverflow.com/questions/50495218/open-root-project-static-css-failed-13-permission-denied-nginx

http://linux.vbird.org/linux_basic/0220filemanager.php#import

https://www.cnblogs.com/chengjian-physique/p/8878410.html

https://www.cnblogs.com/liujiacai/p/8695676.html

https://www.cnblogs.com/zhaof/p/5945576.html

回答: 这个错误提示是由于权限问题导致的。错误信息中指出了"/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 ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值