网站出现403 forbidden怎么解决?如何解决网站上出现403 forbidden?网站上出现403 forbidden要怎样解决?网站上出现403 forbidden要如何解决?错新站长网给你解答。
网站出现403 forbidden怎么解决?403 forbidden是什么意思?403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。Nginx网站出现403 forbidden的原因及故障模拟重现的解决!
1、原因之一是 Nginx 配置文件的 index 参数里没有指定默认首页文件名,下面是 Nginx 配置文件里指定默认首页的参数。
index index.html index.htm; #<==不同的首页文件用空格分隔,按顺序生效
问题模拟示例:
[root@www ~]# cd /application/nginx/conf/extra
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
#index index.html index.htm; #<==注释首页文件参数配置
}
access_log off;
}
[root@www extra]# ../../sbin/nginx -s reload
[root@www extra]# tail -1 /etc/hosts
10.0.0.8 www.etiantian.org bbs.etiantian.org blog.etiantian.org etiantian.org
[root@www extra]# ll ../../html/www/
总用量 12
drwxr-xr-x 2 root root 4096 4月 15 14:20 blog
-rw-r--r-- 1 root root 4 4月 17 17:11 index.html #<==存在首页文件
drwxr-xr-x 2 root root 4096 4月 15 14:19 oldboy
[root@www extra]# curl -I -s 10.0.0.8|head -1
HTTP/1.1 403 Forbidden
#<==问题是,Nginx没有指定首页文件的参数,因此访问Nginx时不会把index.html当首页,所以报403错误。
2、原因之二是网站站点目录下没有配置文件 index 参数里指定的首页文件 index.html 或 index.htm 。
问题示例:
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
index index.html index.htm; #<==配置首页文件配置
}
access_log off;
}
[root@www extra]# ../../sbin/nginx -s reload
[root@www extra]# rm -f ../../html/www/index.html
#<==删除站点目录下的物理首页文件
[root@www extra]# curl -I -s 10.0.0.8|head -1
HTTP/1.1 403 Forbidden
#<==问题是,Nginx有指定首页文件的参数,并且也指定了首页文件,但是首页文件并不存在,所以报403错误。
以上两个 403 的原因除了正确配置解决外,还可以通过一个参数来解决,就是:
autoindex on; #<==当找不到首页文件时,会展示目录结构,这个功能一般用于下载,例如:阿里云镜像站点。
示例如下:
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
autoindex on; #<==当找不到首页文件时,会展示目录结构,这个功能一般用于下载,例如:阿里云镜像站点。
}
access_log off;
}
当不配置 index 首页时,效果如下:
Nginx网站出现403 forbidden的原因及故障模拟重现
3、原因之三是站点目录或内部的程序文件没有 Nginx 的用户访问权限。
[root@www extra]# echo test > ../../html/www/index.html
[root@www extra]# chmod 700 ../../html/www/index.html
#<==设置700让nginx用户无权读取
[root@www extra]# ls -l ../../html/www/index.html
-rwx------ 1 root root 5 4月 17 17:15 ../../html/www/index.html
[root@www extra]# curl -I -s 10.0.0.8|head -1
HTTP/1.1 403 Forbidden #<==403错误
[root@www extra]# chmod 755 ../../html/www/index.html
#<==设置755让nginx用户有权读取
[root@www extra]# curl -I -s 10.0.0.8|head -1
HTTP/1.1 200 OK
#<==200 OK了
4、原因之四是 Nginx 配置文件中设置 allow 、 deny 等权限控制,导致客户端没有没权限访问。
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
index index.html index.htm;
allow 192.168.1.0/24;
deny all;
}
access_log off;
}
[root@www extra]# curl -I -s 10.0.0.8|head -1
HTTP/1.1 200 OK
#<==设置755让nginx用户有权读取
[root@www extra]# ../../sbin/nginx -s reload
[root@www extra]# curl -I -s 10.0.0.8|head -1
HTTP/1.1 403 Forbidden
错新站长网提示:上述出现 403 错误的问题并不是 Nginx 才有, Apache 服务的 Forbidden 403 问题同样也是这几个问题导致的,只是不同的软件的参数细节略有区别而已。
新闻热点
疑难解答