Nginx 访问静态文件403,404错误

背景:

最简单的添加了一个用户 useradd kevin

然后修改了nginx.conf,如下:

     server {
        listen       80;
        server_name  localhost;
            location /test/ {
            root   /home/kevin/;
            index  index.html index.htm;
          }
      }

然后在/home/kevin/下添加了一个图片33.jpg

启动nginx,访问 120.xxx.xxx.xxx/test/33.jpg,报错403 forbidden

 

解决:

1.先确保关闭防火墙,经验证,不关闭防火墙,访问不了

先查看防火墙状态 :firewall-cmd   --state //注意-cmd前面没有空格

然后关闭防火墙:systemctl  stop firewalld

2.确保使用的是nginx.conf,有可能是使用的是同目录下的nginx.default.conf,这一步没验证过不确定

先关闭nginx: 
/usr/local/nginx/sbin/nginx  -s  quit
在执行指定配置文件启动nginx:
/usr/local/nginx/sbin/nginx  -c  /usr/local/nginx/conf/nginx.conf

3.应该是访问权限不够,所以先查看kevin目录的权限:ls  -l   kevin 

看到是可读的,就很奇怪,索性修改权限:chmod -R 755  kevin/

可以看到比上面的多出了 x可执行权限

很关键的一步,确实需要权限,不然无法访问

 

3.继续访问 120.xxx.xxx.xxx/test/33.jpg,继续报错,不过不是403,是404 not found

403是权限问题,而404则是找不到文件,也就是配置文件有误或者url 有误

检查nginx.conf发现是url 写错了,这个配置文件的意思是​:把test拼接到/home/kevin/后面

location /test/ {
            root   /home/kevin/;

把test拼接到/home/kevin/后面,也就是url带test时,会匹配成/home/kevin/test ,那么404就很明显了,我只在kevin下有一个33.jpg,除非我在kevin下新建test/33.jpg,不然就会报错

既然这样那就直接访问120.xxx.xxx.xxx/33.jpg , 就是访问/home/kevin/33.jpg ,同时把配置文件中的/test/ 改成 / 

重载下配置文件   ./nginx  -s  reload

 

再访问120.xxx.xxx.xxx/33.jpg,OK,成功!

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值