您好,登錄后才能下訂單哦!
今天小編就為大家帶來一篇Apache服務配置的文章。小編覺得挺不錯的,為此分享給大家做個參考。一起跟隨小編過來看看吧。
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" ErrorDocument 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> 容器:容器作用于模塊,他會首先判斷模塊是否載入,然后再決定是否進行處理,即只有當判斷結果為真時,才會執行容器內的指令,相反如果為假,則會全部忽略,可以使用<IfModule 模塊名>或者<IfModule !模塊名> 來判斷模塊是否載入
<IfModule mpm_netware_module>
DirctoryIndex index.html
</IfModule>
如果載入則執行<IfModule !mpm_netware_module>
DirctoryIndex index.html
</IfModule>
如果不載入則執行
2 <IfDefine> 容器:封裝一組條件為真時才生效的指令,作用于 server config, virtual host, directory, .htaccess ,和IfModule區別在于,他是以模塊是否加載作為判斷,但是IfDefine是以條件為判斷
依據
<IfDefine Proxy>
LoadModule proxy_module modules/libproxy.so
</IfDefine>
3 <Directory> <DirectoryMatch> 容器:
Directory: 讓它封裝的指令在它的指定的目錄或者他的子目錄起作用,這個目錄必須是一個完整的路徑,當然你也可以使用通配符* ?匹配目錄,也考慮利用使用[]來確定字符范圍,不過不論是哪一種都不能匹配/
<Directory /var/apache/html>
Order Deny,Allow
Deny from all
</Directory>
上述例子禁止了對/var/apache/html目錄的訪問權限。任何請求到/var/apache/html都會被拒絕
如果希望目錄使用正則表達式,那么需要在前面加一個~
<Directory ~ "^/var/apache[0-9]{2}/html">
Order Deny,Allow
Allow from all
</Directory>
DirectoryMatch: 和Directory作用類似,只不過他可以直接接受正則匹配 而不需要加一個~符號
<DirectoryMatch "^/var/apache[0-9]{2}/html">
Order Deny,Allow
Allow from all
</DirectoryMatch>
4 <Files> 和 <FilesMatch>
Files: 只作用于文件,也可以使用通配符和[]以及在正則表達式前面~來使用正則表達式<Files "^\.css">
Order Deny,Allow
Allow from All
</Files>
FilesMatch: Files 而不需要加一個~符號<FilesMatch "\.(gif|jpe?g|png)$">
Order Deny,Allow
Allow from All
</FilesMatch>
5 <Location> 和 <LocationMatch>: 只是對URL進行訪問控制
<Location /cgi>
Order Allow,Deny
Deny from All
</Location>
如果以cgi開頭URL則會被拒絕
另外還可以將URL 請求映射到Apache模塊處理器上,例如使用mod_status模塊:<Location /server-status>
SetHandler server-status
</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>
<Direcotry /var/apache/html>
Order allow,deny
Allow from All
Deny from www.jons.com
</Direcotry>
上述例子,由于Apache會先處理<Directory>容器,最后處理的<Location>容器會覆蓋之前Directory配置,因此對于www.json.com將是允許被用戶訪問的,如果容器相同則按照字典順序由短到長來處理。
以上就是Apache服務配置的詳細內容了,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎關注億速云行業資訊!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。