Centos7詳細解讀Apache2.4的httpd.conf設定檔

以上詳細的翻譯並解釋了httpd.conf的各種變數的配置和Apache2.4.4伺服器設定檔的主要結構,最值得注意就是這裡,它針對分佈在不同目錄下的子目錄定義存取控制權限。還需要注意Apache一些版本的相容性。

Apache2.4.41的設定檔預設位置是/usr/local/apache2/conf/.conf
下面開始詳細解讀httpd.conf的各種變數的配置。
/usr/local/apache2/conf/httpd.conf,具體文件內容如下

# #這是主要的Apache HTTP伺服器設定文件,它包含了伺服器所需的可執行指令配置。 #Apache HTTP伺服器2.4文件請造訪http://httpd.apache.org/docs/2.4/zh-cn。 #注意:請造訪指令索引頁面,每個在Apache 標準發行版中可用的指令都列在下面的連結中。它們使用一致的格式描述,而且有術語字典。 #http://httpd.apache.org/docs/2.4/zh-cn/mod/directives.html #警告:請不要簡單的閱讀此處的內容,如果你沒有搞懂設定指令之前,請先閱讀以上連結的內容。 #ServerRoot設定日誌檔案名稱:如果您需要設定伺服器的日誌檔案路徑,以"/"(對於Win32,則為"drive:/")開頭,伺服器將使用該明確路徑。 #如果沒有設定路徑與"/"一起,ServerRoot的值是預設值,顯示為,"logs/access_log" #將ServerRoot設定為"/usr/local/apache2",日誌在伺服器上的位置是"/usr/local/apache2/logs/access_log"。 # #ServerRoot:Apache HTTP伺服器所在位置,伺服器設定、出錯訊息、日誌檔案都保存在根目錄下。 。 #不要在目錄路徑的末端加上"/"。如果你指出將ServerRoot放在非本機磁碟上,請確保在Mutex指令(如果使用基於檔案的互斥鎖)。 #如果您想分享為多個httpd守護程式使用相同的ServerRoot,您需要在以下位置進行更改最少PidFile。 ServerRoot "/usr/local/apache2" #Apache HTTP伺服器安裝位置,安裝在/usr/local/apache2目錄下。 #Mutex:允許您設定互斥機制和互斥檔案目錄用於單一互斥鎖,或變更全域預設值#如果互斥鎖是基於檔案的,則取消註解並更改目錄,並且預設互斥鎖檔案目錄不在本機磁碟上或不適合某些其他原因。 #Mutex的預設值:日誌#偵聽:允許您將Apache綁定到特定的IP位址/端口,而不是預設端口。詳細內容請參考指令。 #將其變更為特定IP位址和端口,如下所示: #防止Apache綁定伺服器上所有的IP位址。 #例如:Listen 12.34.56.78:8080 這個意思是只可以透過12.34.56.78下面的8080埠來存取http伺服器。 Listen 8088 #單獨設定端口,所有伺服器上綁定的ip都可以使用。將連接埠設定為8088,#因為伺服器上安裝了另一個HTTP服務端,避免和80埠衝突,正常安裝時無需更改80埠。 #動態共用物件(DSO)支援#為了能夠使用作為DSO建構的模組功能,您需要必須在此位置放置對應的"LoadModule"行,它所包含的指令實際上是available _before_they。 #靜態編譯模組(由httpd -l列出的模組)不需要在這裡載入。 #範例: #LoadModule foo_module modules/mod_foo.so LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authn_dbm_module modules/mod authn_Oh. modules/mod_authn_anon.so #LoadModule authn_dbd_module modules/mod_authn_dbd.so #LoadModule authn_socache_module modules/mod_authn_socache.Aad authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so #LoadMolecaz_Mr. #LoadModule authz_owner_module modules/mod_authz_owner.so #LoadModule authz_dbd_module modules/mod_authz_dbd.so LoadModule authz_core_module modules/mod_authz_。 modules/mod_authnz_ldap.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_form_module_suthuth_basic。 auth_digest_module modules/mod_auth_digest.so #LoadModule allowmethods_module modules/mod_allowmethods.so #LoadModule file_cache_module modules/mod_file_cache。 #LoadModule cache_disk_module modules/mod_cache_disk.so #LoadModule cache_socache_module modules/mod_cache_socache.so #LoadModule socache_shmod_cache_socache.so #LoadModule socache_shmod_cache_socache.so #LoadModule socache_shmodb_cache_socache.so #LoadModule socache_shshb_module socache.so socache_dbm_module modules/mod_socache_dbm.so #LoadModule socache_memcache_module modules/mod_socache_memcache.so #LoadModule socache_redis_module modules/module 153m. modules/mod_watchdog.so #LoadModule macro_module modules/mod_macro.so #LoadModule dbd_module modules/mod_dbd.so #LoadModule dumpio_module modules/mod_dbd.so #LoadModule dumpio_module modules/mod_dbd.so #LoadModule dumpio_module modules/moddumpio.模塊modules/mod_request.so #LoadModule include_module modules/mod_include.so LoadModule filter_module modules/mod_filter.so #LoadModule substitute_module modules/modsubstitute. modules/mod_sed.so #LoadModule deflate_module modules/mod_deflate.so LoadModule mime_module modules/mod_mime.so #LoadModule ldap_module modules/mod_mime.so #LoadModule ldap_module modules/mod_ldap. #LoadModule log_debug_module modules/mod_log_debug.so #LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so #LoadMole env_module_soules/mod_env.so # headers_module modules/mod_headers.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modul/15_Lmodv.模塊proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #LoadModule proxy_scgi_module_module modules/mod_proxy_fcgi.so #LoadModule proxy_scgi_module modules/mod_proxy_scgigi.M #LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so #LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so #LoadModule proxy_ajp_moduleT. proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_express_module modules/mod_proxy_express.so #LoadModule proxy_hcheck_module modules/mod_provals_hcheck。 #LoadModule session_cookie_module modules/mod_session_cookie.so #LoadModule session_crypto_module modules/mod_session_crypto.so #LoadModule session_科slotmem_shm_module modules/mod_slotmem_shm.so #LoadModule ssl_module modules/mod_ssl.so #LoadModule lbmethod_byrequests_module modules/_lbmethododvt. modules/mod_lbmethod_bytraffic.so #LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so #LoadModule lbmethod_heartbeat_module modules/smodlbmethodules/artbad. modules/mod_unixd.so #LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex. #modso cgid_module modules/mod_cgid.so #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadMoleationa ncultiul nocation/duegoodul/hulation) dir_module modules/mod_dir.so #LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdirule_modso ialo/dirule_ar. modules/mod_alias.so #LoadModule rewrite_module modules/mod_rewrite.so #如果您希望httpd作為一個不同的使用者或群組運行,您必須先以root的身份運行httpd,然後它才會切換。

User/Group: 執行httpd的使用者/使用者群組的名稱。

一般都是創建一個獨立的用戶群組和用戶來運行httpd服務。

User www #用來執行httpd服務的使用者名稱。 Group www #使用者所屬的使用者群組名稱。 #"main"伺服器設定#本節中的指令設定了'main'伺服器使用的值,可回應伺服器未處理的任何請求#修改指令。 您稍後可以在容器內修改相關內容。容器裡的指令現在是預設值。 #所有這些指令都可能出現在容器內,在這種情況下,這些預設值將會被定義的虛擬主機覆蓋。 #ServerAdmin:您的位址,應透過電子郵件傳送伺服器問題。 該位址出現在某些伺服器產生的頁面上,例如錯誤文件。 例如admin@your-domain.com ServerAdmin xxx@gmail.com #ServerName提供伺服器用來識別自身的名稱和連接埠。通常可以自動確定該名稱和端口,但是我們建議您明確指定它,以防止啟動期間出現問題。 #如果您的伺服器沒有註冊的DNS名稱,請在此輸入其IP位址。 #注意:主機名稱不能隨便指定。必須是你的機器有效的DNS名稱。可以使用IP位址或域名,本機測試時候可以使用127.0.0.1或localhost #ServerName www.example.com:80 #拒絕存取伺服器的整個檔案系統。 您必須在以下其他區塊中明確允許存取網路內容目錄。 #Directory語句就是用來定義目錄的存取限制的#AllowOverride None表示不允許這個目錄下的存取控製檔案來改變這裡進行的設定AllowOverride none Require all denied #注意:從現在開始,您必須專門允許啟用特定功能。因此,如果某些功能無法正常運行,請確保在下面專門啟用了該功能。 #DocumentRoot:您web文件的存放目錄。 預設情況下,所有web請求均來自此目錄,但是符號連結和別名可用於指向其他位置。 DocumentRoot "/usr/local/apache2/htdocs" #Options指令的可能值為“ None”,“ All”或以下任意組合: #Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews #"MultiViews“必須明確地命名,不可以使用"Options All"。

Options指令既複雜又重要。 請瀏覽http://httpd.apache.org/docs/2.4/mod/core.html#options以了解更多資訊。

Options Indexes FollowSymLinks #AllowOverride控制可以在.htaccess檔案中放置哪些指令。 它可以是"All", "None", 或關鍵字的任意組合: #AllowOverride FileInfo AuthConfig Limit AllowOverride None #控制誰可以從該伺服器取得內容。 Require all granted #DirectoryIndex:設定在請求目錄時Apache將提供的檔案。 #設定存取的預設文件,index.html index.php DirectoryIndex index.html #以下幾行防止Web客戶端查看.htaccess和.htpasswd檔案。 Require all denied #ErrorLog:錯誤日誌檔案的位置。 # 如果未在容器中指定ErrorLog指令,則與該虛擬主機相關的錯誤訊息將記錄在裡指定的目錄下"。# 如果沒有指定特定的日誌存放位置,則與該虛擬主機相關的錯誤訊息將記錄在裡面指定的目錄下"。# 如果沒有指定特定的日誌存放位置,預設在"logs/error_log"下。ErrorLog "logs/error_log" #Loglogs/error_log"下。ErrorLog "logs/error_log" #Logerror_log"下。ErrorLog "logs/error_log" #Loglog個:控制記錄到第 175454 月的可用訊息編號info(訊息), notice(通知), warn(警告), error(錯誤), crit(爆擊),alert(警報), emerg(緊急). LogLevel warn #以下指令定義了與CustomLogat一起使用的某些格式暱稱指令稱(請參閱下文TP3 LogFormat "13113T \13"T Form %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %l %u %t \"%r\" %> %mon #您需要啟用mod_logio.c以使用%I和%O LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{UserTP3Tb \"%{Referer}i\" \"% #存取日誌文件的位置和格式(通用日誌文件格式)。 #如果您希望使用具有存取權限,代理程式和引用資訊的日誌檔案(組合日誌檔案格式),則可以使用下列指令。#CustomLog "logs/access_log" combined #重定向:允許您告知用戶端有關伺服器命名空間中曾經存在但不再存在的文件。 http://www.example.com/bar #別名:將Web路徑對應到檔案系統路徑,並用於存取不存在於DocumentRoot下的內容。 #ScriptAlias:控制哪些目錄包含伺服器腳本。 /cgi-bin/ "/usr/local/apache2/cgi-bin/" #ScriptSock:在執行緒伺服器上,指定用於與mod_cgid的CGI守護程式進行通訊的UNIX套接字的路徑。 #CGI目錄存在(如果已配置)。 AllowOverride None Options None Require all granted #避免將HTTP_PROXY環境傳遞到此或任何持久存在"httpoxy"缺陷的代理後端伺服器上的CGI。 #IProxy未定義"代理"請求標頭,IANA未列出RequestHeader unset Proxy early #TypesConfig指向包含從檔案副檔名到MIME類型的映射清單的檔案。 TypesConfig conf/mime.types #AddType可讓您新增或覆寫TypesConfig中為特定檔案類型指定的MIME設定檔。 #AddType application/x-gzip .tgz #AddEncoding可讓您讓某些瀏覽器動態解壓縮資訊。 注意:並非所有瀏覽器都支援此功能。 #AddEncoding x-compress .Z #AddEncoding x-gzip .gz .tgz #如果上面的AddEncoding指令已被註解掉,那麼您可能應該定義這些副檔名以指示媒體類型: AddType application/x-compress .Z Add-Type application/gz. #AddHandler可讓您將某些檔案副檔名對應到"處理程序": #與檔案類型無關的動作。它們既可以內建在伺服器中,也可以與Action指令一起新增(請參見下文) # 要在ScriptAliased目錄之外使用CGI腳本: #(您還需要將「 ExecCGI」新增至「 Options」指令。)#AddHandler cgi-script .cgi #

過濾器可讓您在將內容傳送到客戶端之前對其進行處理。

#解析.shtml檔案以取得伺服器端包含(SSI): #(您還需要在「選項」指令中新增「包含」。)#AddType text/html .shtml #AddOutputFilter INCLUDES .shtml #mod_mime_magic模組允許使用其內容本身中的提示類型。 MIMEMagicFile指令告訴模組提示定義位於何處。 #MIMEMagicFile conf/magic #可自訂的錯誤回應有以下三種形式: #1)純文字2)本機重新導向3)外部重定向# 一些例子:#ErrorDocument 500"伺服器發出了噓聲。" #ErrorDocument 4044/185411 月 3 月404"/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html #MaxRanges:傳回整個資源或特殊值"default","none"或"unlimited"之一,請求中最大範圍數。預設設定是接受200範圍。 #MaxRanges unlimited #EnableMMAP和EnableSendfile:在支援此功能的系統上,可以使用記憶體對映或sendfile syscall進行傳遞檔案。 #這通常可以提高伺服器效能,但是必須從網路安裝的服務關閉檔案系統,或者是否支援這些功能在您的系統上損壞。 #默認值:EnableMMAP On, EnableSendfile Off #EnableMMAP off #EnableSendfile on #補充配置#可以包含conf/extra/目錄中的配置文件以添加其他功能或修改服務器的默認配置,或者您可以僅在此處複製其內容並根據需要進行更改。 #伺服器集區管理(特定於MPM) #include conf/extra/httpd-mpm.conf #多語言錯誤訊息#include conf/extra/httpd-multilang-errordoc.conf #精美的目錄清單#include conf/tratra/http /extra/httpd-languages.conf #用戶主目錄#include conf/extra/httpd-userdir.conf #有關請求和配置的即時資訊#include conf/extra/httpd-info.conf #虛擬主機#include conf/extra/httpd-info.confm Server手冊#include conf/extra/httpd-manual.conf #分散式創作與版本控制(WebDAV) #include conf/extra/httpd-dav.conf #各種預設設定#include conf/extra/httpd-defaultML415T15977715 月 2115 月. conf/extra/proxy-html.conf Include安全性(SSL / TLS)連線#include conf/extra/httpd-ssl.conf Include注意:必須存在以下內容,才能在沒有/dev/random等效項但具有靜態編譯的mod_ssl的平台上支援不使用SSL的啟動。 SSLRandomSeed startup builtin SSLRandomSeed connect builtin

容器下指令的詳細解釋:
Options設定 可以使用Options來控制這個目錄下的一些存取特性設定
All 所有的目錄特性都有效,這是預設狀態
None 所有的目錄特性都無效
FollowSymLinks 允許使用符號連接,這將使瀏覽器有可能存取文檔根目錄(DocumentRoot)以外的文檔
SymLinksIfOwnerMatch 只有符號連接的目的與符號連接本身為同一用戶所擁有時,才允許訪問,這個設定將增加一些安全性
ExecCGI 允許這個目錄下可以執行CGI程序
Indexes 允許瀏覽器可以產生這個目錄下所有檔案的索引,使得在這個目錄下沒有index.html(或其他索引檔案)時,能傳送這個目錄下的檔案列表

AllowOverride的設定對每個目錄存取控制檔案作用的影響
All 缺省值,使存取控製檔案可以覆蓋系統配置
None 伺服器忽略存取控制檔案的設置
Options 允許存取控制檔案中可以使用Options參數定義目錄的選項
FileInfo 允許存取控製檔案中可以使用AddType等參數設置
AuthConfig 允許存取控製檔案使用AuthName,AuthType等針對每個使用者的認證機制,這使目錄屬主能以口令和使用者名稱來保護目錄
Limit 允許對存取目錄的客戶機的IP位址和名字進行限制

以上詳細的翻譯並解釋了httpd.conf的各種變數的配置和Apache2.4.4伺服器設定檔的主要結構,最值得注意就是這裡,它針對分佈在不同目錄下的子目錄定義存取控制權限。還需要注意一些版本的兼容性。

1/5 - (2 votes)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *