網站出現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 問題同樣也是這幾個問題導致的,只是不同的軟件的參數細節略有區別而已。
新聞熱點
疑難解答