在配置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è)試。
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è)置。解決方法如下:
打開(kāi) apache的配置文件httpd.conf,找到這段代碼:
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
有時(shí)候由于配置了php后,這里的“Deny from all”已經(jīng)拒絕了一切連接。把該行改成“allow from all”,修改后的代碼如下,問(wèn)題解決。
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
以下是其它網(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.
?
通常情況可能(但不限于此)的原因有:
<Directory "/var/blog">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
提示:生產(chǎn)環(huán)境上面的配置還需修改,見(jiàn)下文,此處僅就本文的主題講解。
第二種配置:
<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>
比如apache2安裝好后默認(rèn)的參數(shù)如下:
今天在公司電腦上安裝Apache,版本2.2.8,裝完剛測(cè)試可以;配置了下php的php.in文件再次localhost打開(kāi)發(fā)現(xiàn)錯(cuò)誤:HTTP 錯(cuò)誤 403 - 禁止訪問(wèn),即403 Forbidden:You don't have permission to access / on this server.權(quán)限又不夠了?
馬上打開(kāi)apache的配置文件httpd.conf,逐行檢查。在大約快一半的地方有以下這段代碼:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
發(fā)現(xiàn)了吧。
由于配置了php后,這里的“Deny from all”已經(jīng)拒絕了一切連接。把該行改成“allow from all”,修改后的代碼如下,問(wèn)題解決。
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
- 第一:看看是不是Directory配置錯(cuò)了,好像一般不會(huì)是這個(gè)原因
- 第二:看看User Group指定的用戶有沒(méi)有權(quán)限訪問(wèn)那個(gè)目錄,否則用chown修改目錄的所有者
- 第三:看看是不是seLinux搞得鬼,一般沒(méi)事把selinux停了再重啟linux,selinux的配置文件在/etc/selinux/config,改成disable
- 第四:我把所有的都做了發(fā)現(xiàn)還是不行,那么可能是apache是用root安裝的,把a(bǔ)pache卸了用一個(gè)非root用戶重新安裝。
終極解決辦法:如果以上都不行的話?。?!
其間曾想到是否Selinux的問(wèn)題,進(jìn)去看了一圈,沒(méi)有發(fā)現(xiàn)什么要改的地方。(后來(lái)的事實(shí)證明,有時(shí)候直覺(jué)是很準(zhǔn)的,能否找到答案,區(qū)別往往是:是否在直覺(jué)上走的更深入)。
而解決方法恰恰就是修改Selinux對(duì)public_html的訪問(wèn)控制。
用以下命令修改文件夾安全屬性
chcon -R -t httpd_user_content_t public_html/
本文為拋磚引玉 更多原因,期待你的答案。。
?