Nginx 403 forbidden 错误的原因及解决方法

Posted 看那年十七

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 403 forbidden 错误的原因及解决方法相关的知识,希望对你有一定的参考价值。

nginx 403 forbidden 错误的原因及解决方法

一、由于启动用户和nginx工作用户不一致所致

1.1查看nginx的启动用户,发现是nginx,而为是用root启动的

[root@iZwz96xkbmh1v1n08cvb5dZ /]# ps aux|grep nginx
root        2773  0.0  0.0   9068   844 ?        Ss   13:56   0:00 nginx: master process /usr/sbin/nginx
nginx       2774  0.0  0.1   9476  2360 ?        S    13:56   0:00 nginx: worker process
root        2916  0.0  0.0 221460   836 pts/0    R+   13:59   0:00 grep --color=auto nginx

1.2将nginx.config的user改为和启动用户一致,

命令:vim etc/nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root; //就是这里
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

1.3 也可以使用如下命令直接查看

ps aux|grep nginx

[root@iZwz96xkbmh1v1n08cvb5dZ nginx]# ps aux|grep nginx
root        2983  0.0  0.0   9068   848 ?        Ss   14:02   0:00 nginx: master process /usr/sbin/nginx
root        2984  0.0  0.1   9476  2356 ?        S    14:02   0:00 nginx: worker process
root        2986  0.0  0.0 221460   848 pts/0    R+   14:02   0:00 grep --color=auto nginx

二、缺少index.html,就是配置文件中index index.html index.htm这行中的指定的文件。

 server 
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / 
        root /root/xiaoaodi/index/dist;
        index index.html;
        

如果在/data/www/下面没有index.html的时候,直接文件,会报403 forbidden。

三、权限问题,如果nginx没有web目录的操作权限,也会出现403错误。

解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

  1. chmod -R 777 /data

  2. chmod -R 777 /data/www/

  3. [root@iZwz96xkbmh1v1n08cvb5dZ data]# chmod 777 www
    [root@iZwz96xkbmh1v1n08cvb5dZ data]# ls -l
    total 4
    drwxrwxrwx 3 root root 4096 Apr 10 14:26 www
    
    

访问Nginx时出现‘’403Forbidden‘’的原因

Nginx配置文件:

/application/nginx/conf/nginx.conf

1、站点目录没有Nginx用户的访问权限

2、配置文件里没有配置默认首页参数(index.html),没有以下内容。

    server {
        listen       80;
        server_name  www.chainwaytsp.cn;
        location / {
            root   html/webApi;
            index  index.html index.htm;               没有类似的这一行内容
            auth_basic "badboy training";
            auth_basic_user_file /application/nginx/conf/htpasswd;
        }
        access_log logs/access_cn.log main;
    }

3、配置文件里有配置默认首页参数,但是站点目录下没有配合文件里指定的参数(物理文件index.html)

/application/nginx/html/webApi/index.html        没有这个文件

以上两种情况可以用一个参数解决            autoindex    on;当找不到首页文件时展示目录结构。不建议使用这个参数,除非有需求。

4、配置文件里设置了allow、deny等权限控制,导致客户端没有访问权限

    server {
        listen       80;
        server_name  www.chainwaytsp.cn;
        location / {
            root   html/webApi;
            index  index.html index.htm;
            allow 192.168.1.0/24;
            deny all;
            auth_basic "badboy training";
            auth_basic_user_file /application/nginx/conf/htpasswd;
        }
        access_log logs/access_cn.log main;
    }


本文出自 “jhyeliu” 博客,请务必保留此出处http://jhyeliu.blog.51cto.com/13354145/1981213

以上是关于Nginx 403 forbidden 错误的原因及解决方法的主要内容,如果未能解决你的问题,请参考以下文章

无法找到 403 Forbidden 错误的原因:Nginx Daphne Django

nginx 403 forbidden怎么解决

403 forbidden nginx怎么解决

nginx:403 forbidden 二种原因

403forbidden404not found宝塔 nginx配置默认首页nginx demo

请问Laravel5.3在Nginx1.8.1中只能显示首页,其它所有页面都显示403 Forbidden是啥原因?