如何解決apachehttpd服務器403forbidden的問題-創(chuàng)新互聯(lián)

如何解決apache httpd服務器403 forbidden的問題?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)是專業(yè)的唐縣網(wǎng)站建設(shè)公司,唐縣接單;提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行唐縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

一、問題描述

在apache2的httpd配置中,很多情況都會出現(xiàn)403。

剛安裝好httpd服務,當然是不會有403的問題了。主要是修改了一些配置后出現(xiàn),問題描述如下:

修改了DocumentRoot目錄指向后,站點出現(xiàn)403錯誤。

設(shè)置了虛擬主機目錄也可能導致403。

apache的httpd服務成功啟動,看起來都很正常,卻沒有權(quán)限訪問

日志出現(xiàn): access to / denied (filesystem path '/srv/lxyproject/wsgi/django.wsgi') because search permissions are missing on a component of the path

設(shè)置虛擬目錄后,錯誤日志出現(xiàn):client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

二、分析問題及方案

下面一步步解決問題時注意錯誤日志內(nèi)容。ok,開始。

1、httpd.conf中目錄配置文件

如果顯示更改了DocumentRoot,比如改為 "/usr/local/site/test" 。site目錄和test目錄是通過使用mkdir建立的,然后在test目錄下放一個index.html。這種情況應該查看httpd.conf中配置。

你的<Directory "/usr/local/site/test">一定要和DocumentRoot一致,因為這段Directory是apache對該目錄訪問權(quán)限的設(shè)置,只有設(shè)置正確的目錄,DocumentRoot才會生效。

<Directory "/usr/local/site/test">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

2、目錄訪問權(quán)限

第一步配置正確還是出現(xiàn)403,檢查目錄配置<Directory "/usr/local/site/test">中是否有Deny from all。有則所有訪問都會被拒絕,當然403了。

可以設(shè)置為Allow from all或者Require all granted來處理。

不要修改<Directory />根目錄中Deny from all。

3、目錄權(quán)限

如果至此還是403,可能是網(wǎng)站目錄的權(quán)限問題。

apache要求目錄具有執(zhí)行權(quán)限,也就是x,要注意的是,你的目錄樹都應該擁有這些權(quán)限。

假如你的目錄是/usr/local/site/test,那么要保證/usr,/usr/local,/usr/local/site,/usr/local/site/test這四個層級的目錄都是755權(quán)限。

#chmod 755 /usr/local/site
#chmod 755 /usr/local/site/test

我犯過一個錯就是只設(shè)置了最后一級目錄權(quán)限,沒有設(shè)置上級目錄權(quán)限,導致403。

4、 虛擬目錄

【這個問題我沒遇到過,因為我沒這樣寫過,網(wǎng)上資料這么寫,可作為參考】

如果設(shè)置的是虛擬目錄,那么你需要在httpd.conf中定義一個虛擬目錄,而且像極了如下的片段:

Alias /folder "/usr/local/folder"                       
<Directory "/usr/local/folder">                         
    Options FollowSymLinks                            
    AllowOverride None                              
    Order deny,allow                               
    Deny from all                                 
    Allow from 127.0.0.1 192.168.1.1                       
</Directory>

如果是這一種情況,而且你寫得類似我上面的代碼,三處folder都是一樣一樣的,那絕對會是403!怎么解決呢,就是把跟在Alias后面斜杠后面的那串改了,改成什么,不要和虛擬目錄的文件夾同名就好,然后我就可以用改過后的虛擬目錄訪問了,當然,改文件夾也行,只要你不怕麻煩,只要Alias后面的虛擬目錄定義字符(紅色)和實際文件夾名(黑色)不相同就OK。

5、selinux的問題

如果依然是403,那就是selinux在作怪了,于是,你可以把你的目錄進行一下selinux權(quán)限設(shè)置。

今天我遇到的就是這個問題了。

#chcon -R -t httpd_sys_content_t /usr/local/site
#chcon -R -t httpd_sys_content_t /usr/local/site/test

網(wǎng)上資料說不過,這一步大多不會發(fā)生。但我的問題確實是,可能跟系統(tǒng)有關(guān),具體原理還不是很懂。

6、wsgi的問題

我的虛擬主機配置為:

<VirtualHost *:80>
WSGIScriptAlias / /srv/lxyproject/wsgi/django.wsgi
Alias /static/ /srv/lxyproject/collectedstatic/
ServerName 10.1.101.31
#ServerName example.com
#ServerAlias www.example.com
<Directory /srv/lxyproject/collectedstatic>
  Options Indexes  FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<Directory /srv/lxyproject/wsgi/>
    Allow from all
</Directory>
ErrorLog   /etc/httpd/logs/lxyproject.error.log
LogLevel warn
</VirtualHost>

我訪問

log報錯:

client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

解決辦法:

修改<Directory /srv/lxyproject/wsgi/>中Allow from all為:Require all granted。

這個問題是因為版本的原因,

我的httpd版本為:

[root@yl-web conf.d]# rpm -qa |grep httpd
httpd-devel-2.4.6-31.el7.centos.x86_64
httpd-tools-2.4.6-31.el7.centos.x86_64
httpd-2.4.6-31.el7.centos.x86_64

而2.3以下版本用Allow from all,2.3及以上版本為Require all granted。

<Directory /home/aettool/aet/apache>
  <IfVersion < 2.3 >
   Order allow,deny
   Allow from all
  </IfVersion>
  <IfVersion >= 2.3>
   Require all granted
  </IfVersion>
</Directory>

上述就是小編為大家分享的解決apache httpd服務器403 forbidden問題的方法了,如果您也有類似的疑惑,不妨參照上述方法進行嘗試。如果想了解更多相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。

本文題目:如何解決apachehttpd服務器403forbidden的問題-創(chuàng)新互聯(lián)
文章鏈接:http://muchs.cn/article46/dooieg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、移動網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站制作、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司