在配置linux的 apache服務(wù)時(shí),經(jīng)常會(huì)遇到http403錯(cuò)誤,我今天配置測(cè)試時(shí)也出現(xiàn)了,最后解決了,總結(jié)了一下。http 403錯(cuò)誤是拒絕訪問(wèn)的意思,有很多原因的。還有,這些問(wèn)題在win平臺(tái)的apache里一樣會(huì)發(fā)生!我按照經(jīng)驗(yàn)總結(jié)的主要有以下4種原因!
本人測(cè)試的環(huán)境 是:scientific linux 5.3(與rhel和centos百分百兼容!),其它版本的linux應(yīng)該通用,沒(méi)測(cè)試。
1. 訪問(wèn)的文檔權(quán)限不夠。要755以上權(quán)限。解決方法:用命令chmod 755 /var/www/ 或其他相應(yīng)目錄。
2. selinux或防火墻的原因。解決方法:先關(guān)閉selinux和讓防火墻通過(guò)www服務(wù)。
3. 虛擬主機(jī)配置錯(cuò)誤。例如我遇到過(guò)一次的:
httpd.conf里加載了虛擬主機(jī)的配置文件:
# virtual hosts
include conf/extra/httpd-vhosts.conf
而conf/extra/httpd-vhosts.conf并沒(méi)有配置好,而且虛擬主機(jī)功能暫時(shí)還沒(méi)有用,所以把include conf/extra/httpd-vhosts.conf注釋掉,重啟apache后正常了。
解決方法:重新配置虛擬主機(jī)或暫時(shí)關(guān)閉。
4. documentroot的設(shè)置。解決方法如下:
打開 apache的配置文件httpd.conf,找到這段代碼:
<directory />
options followsymlinks
allowoverride none
order deny,allow
deny from all
</directory>
有時(shí)候由于配置了php后,這里的“deny from all”已經(jīng)拒絕了一切連接。把該行改成“allow from all”,修改后的代碼如下,問(wèn)題解決。
<directory />
options followsymlinks
allowoverride none
order deny,allow
allow from all
</directory>
ps:我以前沒(méi)有寫技術(shù)日志的習(xí)慣,以后多與大家分享。
以下是其它網(wǎng)友的補(bǔ)充:
部署apache服務(wù)forbidden 403問(wèn)題小結(jié)
很多朋友和學(xué)生都問(wèn)過(guò)我同樣的問(wèn)題 訪問(wèn)網(wǎng)站forbidden 403 什么原因?一般頁(yè)面提示為:
forbidden
you don't have permission to access / on this server.
http錯(cuò)誤代碼403:
403 forbidden 資源不可用。服務(wù)器理解客戶的請(qǐng)求,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致。
通常情況可能(但不限于此)的原因有:
原因1:apache配置文件中沒(méi)有對(duì)站點(diǎn)目錄的權(quán)限許可,這通常是在初始安裝apache后,更改了默認(rèn)的apache站點(diǎn)目錄時(shí)所至(重要,常發(fā)生):
如將站點(diǎn)目錄更改為:/var/blog,則在apache配置文件中如果不加下面的配置 就會(huì)返回403錯(cuò)誤。
<directory "/var/blog">
options indexes followsymlinks
allowoverride none
order allow,deny
allow from all
</directory>
提示:生產(chǎn)環(huán)境上面的配置還需修改,見(jiàn)下文,此處僅就本文的主題講解。
原因2:站點(diǎn)目錄下無(wú)首頁(yè)文件(index文件),而apache的配置又禁止了目錄瀏覽,就會(huì)提示403錯(cuò)誤,配置如下(偶爾發(fā)生):
a.站點(diǎn)目錄下無(wú)首頁(yè)文件(index文件):
[root@http-server blog]# pwd
/var/blog
[root@http-server blog]# ll
total 12
drwxr-xr-x 2 root root 4096 jun 4 22:11 oldboy
-rw-r--r-- 1 root root 0 jun 4 22:11 oldboy.html
提示:上面列出來(lái)的就是站點(diǎn)目錄/var/blog目錄下沒(méi)有預(yù)設(shè) 首頁(yè)directoryindex index.html
b.apache的配置禁止目錄瀏覽的三種配置
第一種配置:
<directory "/var/blog">
options -indexes followsymlinks
allowoverride none
order allow,deny
allow from all
</directory>
第二種配置:
<directory "/var/blog">
options followsymlinks
allowoverride none
order allow,deny
allow from all
</directory>
第三種配置:
<directory "/var/blog">
options none
allowoverride none
order allow,deny
allow from all
</directory>
提示:第二種原因朋友們偶爾會(huì)朋友,但遇到問(wèn)題最多的還是第一種原因。
========================================================
以上配置的詳細(xì)說(shuō)明:
===========================
原因3:還是directory權(quán)限問(wèn)題(不常發(fā)生)
如下文:拒絕10.0.0.0/24整段訪問(wèn)。這樣被拒絕的主機(jī)訪問(wèn)就會(huì)出現(xiàn)403錯(cuò)誤
<directory "/var/blog">
options indexes followsymlinks
allowoverride none
order allow,deny
#allow from all
deny from 10.0.0.0/24
<directory "/var/blog">
options indexes followsymlinks
allowoverride none
order allow,deny
#allow from all
allow from 10.0.0.116
#deny from 10.0.0.0/24
</directory>
原因4:站點(diǎn)目錄權(quán)限問(wèn)題(不常發(fā)生)。
站點(diǎn)目錄需要apache的用戶有訪問(wèn)權(quán)限,否則就會(huì)報(bào)403錯(cuò)誤。
[root@http-server var]# pwd
/var
[root@http-server var]# chown -r root.root blog/
[root@http-server var]# chmod 700 blog
[root@http-server var]# ll -d blog/
drwx------ 3 root root 4096 jun 4 22:11 blog/
本文為拋磚引玉 更多原因,期待你的答案。。