Nginx 403 forbidden的解决办法

以下是我的Nginx配置:

user  root; 
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        #autoindex    on; #是否允许访问目录

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            root   /home/ftpuser/taotao; #自定义访问的根目录
            index  index.html index.htm;
            #autoindex    on; #是否允许访问目录
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

解决办法一(不推荐)

在nginx.conf配置文件对应的位置添加以下两句,表示使用root角色访问,并且允许访问目录。autoindex默认是off。可是这种方式不好,因为别人可以看到自己服务器的目录结构。

user root;

autoindex on; #是否允许访问目录

注:配置完成之后需要重启nginx服务,方能生效。

[root@localhost sbin]# ./nginx -s reload

解决办法二(推荐)

方法二的配置文件即为开篇所写的配置文件:

user  root; 
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        #autoindex    on; #是否允许访问目录

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            root   /home/ftpuser/taotao; #自定义访问的根目录
            index  index.html index.htm;
            #autoindex    on; #是否允许访问目录
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

按照上述配置文件配置完成之后重启nginx服务

[root@localhost sbin]# ./nginx -s reload

发现已经可以访问自定义根目录文件夹(/home/ftpuser/taotao)下面的具体文件了,但是访问根路径的时候还是显示403 forbidden的错误。

这是因为在自定义访问的根目录下(/home/ftpuser/taotao)缺少nginx启动后默认访问的index.html文件,将index.html文件复制一份到根目录(/home/ftpuser/taotao)下即可正常访问了。

Nginx 403 forbidden的解决办法