首頁  >  文章  >  運維  >  Apache服務配置詳細講解

Apache服務配置詳細講解

王林
王林轉載
2019-08-23 13:52:383002瀏覽

Apahce 設定指令可以分成兩大塊,核心指令和第三方提供的指令。在apache中,每個指令都對應著一個模組,而在所有模組中,最重要的就是core_module,so_module,http_module,以及mpm模組,他們除了so_moudle以外的其他模組都不可以關掉或禁止.

一:httpd.conf

(1) 主伺服器部分

1 、ServerName: 定義apache預設主機名,可以是網域名稱或IP位址

2 、ServerRoot: 用來定義伺服器所在的目錄,這個路徑通常是在設定時候由--prefix來指定的

3 、DocumentRoot: 用來指定apache提供頁面服務的根目錄,這個路徑必須是絕對路徑而不是相對路徑,如果有空格還需要用引號括起來

4 、ServerAdmin: 伺服器出錯後給管理員發郵件的位址

5 、ServerAlias 和Alias: 都用於映射目錄,只是ServerAlias將映射的目錄識別為CGI腳本目錄,並將此目錄所有檔案都當作CGI腳本對待。但是Alias只是映射為一個普通的目錄

6 、User 和Group: 用來定義用於運行apache 子程序的使用者和使用者群組

7 、Listen: 用來定義監聽apache的連接埠號碼

8 、LoadModule 指令:用於載入模組或目標檔案LoadModule cgi_module modules/mod_cgi.so_module

#9、 ErrorDocument: 自義錯誤頁面資訊ErrorDocument 500 "unknown error" 404  "/var/server/www/cgi-bin/missing_404.pl" ErrorDocument 402 http://www.nicky.com/error_402.html

10、 options : 決定在哪些目錄中使用那些特性,這些特性如下:

None: option 指令將不會起作用

ExecCGI: 允許目前目錄下執行CGI腳本

Includes: 允許使用SSI功能

IncludesNOEXEC: 允許使用SSI功能,但是exec cgi and exec cmd 功能停用

Indexes: 開立索引功能,例如一個請求到目錄URLz中沒有有DirectoryIndex 指令指定的索引文件,那麼伺服器就會自動傳回一個請求目錄內容清單

FollowSymLinks: 允許在目前環境使用符號連接,但是在Location 容器中會被忽略

All: 使用除MultiViews之外的所有特性,也是options的預設參數

MultiViews: 用於啟動mod_negotiations模組提供的多重視圖功能

11 、ServerTokens: OS/Major/Full 影響錯誤頁腳資訊的詳細程度,一般不建議使用

(2) 容器部分
1 、 容器:容器作用於模組,他會先判斷模組是否載入,然後再決定是否要處理,即只有當判斷結果為真時,才會執行容器內的指令,相反如果為假,則會全部忽略,可以使用 來判斷模塊是否載入

<IfModule mpm_netware_module><br>    DirctoryIndex index.html <br></IfModule>

如果載入則執行
<IfModule ! mpm_netware_module><br>    DirctoryIndex index.html <br></IfModule>
如果不載入則執行

2 容器:封裝一組條件為真時才為真時才為真生效的指令,作用於server config, virtual host, directory, .htaccess ,和IfModule區別在於,他是以模組是否載入作為判斷,但是IfDefine是以條件為判斷

依據

<IfDefine Proxy>

LoadModule proxy_module modules/libproxy.so

</IfDefine>

##</IfDefine>

##</IfDefine>

##</IfDefine>##>

#3 容器:

#Directory: 讓它封裝的指令在它的指定的目錄或他的子目錄起作用,這個目錄必須是一個完整的路徑,當然你也可以使用萬用字元* ?匹配目錄,也考慮利用使用[]來確定字元範圍,不過不論是哪一種都不能匹配/

#    Order Deny,Allow

Deny from all

#上述範例禁止了對/var/apache/html目錄的存取權限。任何請求到/var/apache/html都會被拒絕

如果希望目錄使用正規表示式,那麼需要在前面加上一個~

    Order Deny,Allow

##Allow from all

# ########
#########DirectoryMatch: 和Directory作用類似,只不過他可以直接接受正規符合而不需要加上一個~符號###### ###############    Order Deny,Allow########## ###Allow from all##################

4
Files: 只作用於文件,也可以使用通配符和[]以及在正規表示式前面~來使用正規表示式
< Files "^\.css"><br>    Order Deny,Allow<br>Allow from All<br></Files>

FilesMatch: Files 而不需要加上一個~符號
<FilesMatch "\.(gif|jpe?g|png)$"><br>Order Deny,Allow<br>Allow from All<br></FilesMatch>

#5 : 只是對URL進行存取控制

#Order Allow,Deny
Deny from All

#如果以cgi開頭URL則會被拒絕
另外還可以將URL 請求對應到Apache模組處理器上,例如使用mod_status模組:
<Location /server-status><br>SetHandler server-status<br></Location>

如果使用上面的配置。那麼存取/server-status,apache會將連線交給mod_status模組處理,並傳回一個Apache伺服器運行狀態頁面

容器的處理順序問題
Apache 會優先處理Directory 容器(但是不會處理有正規表示式的Directory和.htaccess,)接著處理Files 和FilesMatch 容器,再接著就是處理Location 和LocationMatch容器

#<Location /var/apache /html>

    Order deny,allow

    Allow from All

</Location&gt ;

<Direcotry /var/apache/html>

     Order allow,deny

#Allow from All

Deny from www.jons.com

#</Direcotry>

#上述例子,由於Apache會先處理容器,最後處理的容器會覆蓋之前Directory配置,因此對於www.json.com將是允許被用戶訪問的,如果容器相同則按照字典順序由短到長來處理。

更多相關問題請造訪PHP中文網:linux影片教學

以上是Apache服務配置詳細講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除