【请教】利用nginx搭建静态资源服务器,但是在浏览器访问时报403 forbidden错误

来源:7-5 实例演示反向代理和负载均衡

刘大鱼

2019-06-11

如题,资源放在自己建的nginx/dlib目录下,配置如下:

#user  nobody;
worker_processes  1;

pid         /var/run/nginx.pid;
#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  www.apachetest.com;

        location / {
                alias dlib/;
        }
        #charset koi8-r;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

浏览器上报错信息如下
图片描述

日志报错如下:

2019/06/11 00:32:04 [error] 5458#0: *23 directory index of "/etc/nginx/dlib/" is forbidden, client: 192.168.2.114, server: www.apachetest.com, request: "GET / HTTP/1.1", host: "www.apachetest.com"
2019/06/11 00:32:45 [error] 5488#0: *25 directory index of "/etc/nginx/dlib/" is forbidden, client: 192.168.2.114, server: www.apachetest.com, request: "GET / HTTP/1.1", host: "www.apachetest.com"

这是资源的访问权限不够吗?但是资源文件目录及其下的目录权限均为755,而文件均为644,应该是有读权限的。
我将其中一个文件权限改成777也同样失败了,另外目录是通过root账户建立的。
请问一下老师这是什么原因?

【更新】我将资源文件目录放到了另一个账户下了,随后修改了alias/root的设置,还是无法访问,路径设置了两种不同,错误也是不一样的。
第1种路径设置:还是403 forbidden,代码如下(使用alias还是root效果是一样的)

    server {
        listen       80;
        server_name  www.apachetest.com;

        location / {
        #配置一个存储静态资源的web服务器,静态资源目录为/home/leo/tmp/dlib/
                alias /home/leo/tmp/dlib/;
        #       root /home/leo/tmp/dlib/;
        }

第2种路径设置:直接显示了/html/index.html的欢迎页面(使用alias还是root效果一样)

    server {
        listen       80;
        server_name  www.apachetest.com;

        location /dlib/ {
        #配置一个存储静态资源的web服务器,静态资源目录为/home/leo/tmp/dlib/
                alias /home/leo/tmp/;
        #       root /home/leo/tmp/;
        }

另外,静态资源是从dlib网页下载的,做这个配置的目的就是希望能通过访问www.apachetest.com达到访问dlib网页的效果(http://dlib.net

写回答

2回答

编程浪子

2019-06-26

你好

直接到课程群里面沟通,快些。这里面的描述也描述不清楚

0
0

编程浪子

2019-06-11

你好

 /etc/ 整个目录都是系统目录了,你不应该在这个目录下面读取文件了。


给你一个参考的:https://gitee.com/apanly/mooc/blob/master/vagrant/ubuntu/nginx/laravel5.conf 。




0
6
刘大鱼
回复
编程浪子
老师抱歉,这几天没上来看消息回复,所以一直没有回复。 我再次做了尝试,将"root /home/leo/tmp/;" 在server模块写了,location写的是alias /dlib/; 但是还是显示404错误,日志报/dlib/index.html is not found,即使重新安装了一次nginx重新配置一遍还是如此。为什么会自动去目录下找index.html文件?
2019-06-26
共6条回复

快速上手Linux 玩转典型应用

以主流CentOS 7 操作系统为例,系统讲解Linux,真实线上环境助你快速上手,独立配置运维服务器

1663 学习 · 572 问题

查看课程