Apache HTTP Server 2.4 新特性概述

2021-08-24 17:24 更新

本文檔描述了 Apache HTTP Server 2.2 和 2.4 版本之間的一些主要變化。有關(guān) 2.0 版以來的新功能,請參閱2.2 新功能 文檔。

核心增強(qiáng)

運(yùn)行時可加載 MPM
現(xiàn)在可以在編譯時將多個 MPM構(gòu)建為可加載模塊。選擇的 MPM 可以在運(yùn)行時通過LoadModule指令進(jìn)行配置。
事件 MPM
該事件MPM的實(shí)驗階段,但現(xiàn)在完全支持。
異步支持
更好地支持異步讀/寫以支持 MPM 和平臺。
每個模塊和每個目錄的 LogLevel 配置
LogLevel現(xiàn)在可以按模塊和每目錄配置。新的水平trace1 ,以trace8已經(jīng)在上面添加debug日志級別。
每個請求的配置部分
<If>、 <ElseIf><Else> 部分可用于根據(jù)每個請求標(biāo)準(zhǔn)設(shè)置配置。
通用表達(dá)式解析器
新的表達(dá)式解析器允許在諸如、 、 、 等指令中使用通用語法 來指定 復(fù)雜的條件。 SetEnvIfExprRewriteCondHeader<If>
KeepAliveTimeout 以毫秒為單位
現(xiàn)在可以以KeepAliveTimeout毫秒為單位指定。
NameVirtualHost 指令
不再需要,現(xiàn)已棄用。
覆蓋配置
AllowOverrideList 指令允許更細(xì)粒度地控制.htaccess文件中允許使用哪些指令。
配置文件變量
現(xiàn)在可以Define 在配置中使用變量,如果在配置中的許多地方使用相同的值,則可以更清晰地表示。
減少內(nèi)存使用
盡管有許多新特性,2.4.x 往往比 2.2.x 使用更少的內(nèi)存。

新模塊

mod_proxy_fcgi
FastCGI 協(xié)議后端 mod_proxy
mod_proxy_scgi
SCGI 協(xié)議后端 mod_proxy
mod_proxy_express
提供動態(tài)配置的大量反向代理 mod_proxy
mod_remoteip
將請求的明顯客戶端遠(yuǎn)程 IP 地址和主機(jī)名替換為代理或負(fù)載均衡器通過請求標(biāo)頭提供的 IP 地址列表。
mod_heartmonitormod_lbmethod_heartbeat
允許mod_proxy_balancer根據(jù)后端服務(wù)器上的活動連接數(shù)做出負(fù)載平衡決策。
mod_proxy_html
以前是第三方模塊,它支持在反向代理情況下修復(fù) HTML 鏈接,其中后端生成對代理客戶端無效的 URL。
mod_sed
, 的高級替換mod_substitute允許使用 sed 的全部功能編輯響應(yīng)主體。
mod_auth_form
啟用基于表單的身份驗證。
mod_session
使用 cookie 或數(shù)據(jù)庫存儲為客戶端啟用會話狀態(tài)。
mod_allowmethods
用于限制某些 HTTP 方法而不干擾身份驗證或授權(quán)的新模塊。
mod_lua
將Lua語言嵌入到 httpd 中,用于配置和小型業(yè)務(wù)邏輯功能。(實(shí)驗性)
mod_log_debug
允許在請求處理的不同階段添加可自定義的調(diào)試日志記錄。
mod_buffer
提供緩沖輸入和輸出過濾器堆棧
mod_data
將響應(yīng)正文轉(zhuǎn)換為 RFC2397 數(shù)據(jù) URL
mod_ratelimit
為客戶端提供帶寬速率限制
mod_request
提供過濾器來處理和提供可用的 HTTP 請求正文
mod_reflector
通過輸出過濾器堆棧提供請求正文的反射作為響應(yīng)。
mod_slotmem_shm
提供基于 Slot 的共享內(nèi)存提供程序(ala the scoreboard)。
mod_xml2enc
以前是第三方模塊,它支持基于 libxml2(標(biāo)記感知)過濾器模塊的國際化。
mod_macro (自 2.4.5 起可用)
在配置文件中提供宏。
mod_proxy_wstunnel (自 2.4.5 起可用)
支持網(wǎng)絡(luò)套接字隧道。
mod_authnz_fcgi (自 2.4.10 起可用)
啟用 FastCGI 授權(quán)方應(yīng)用程序來驗證和/或授權(quán)客戶端。
mod_http2 (自 2.4.17 起可用)
支持 HTTP/2 傳輸層。
mod_proxy_http2 (自 2.4.19 起可用)
HTTP/2 協(xié)議后端用于 mod_proxy
mod_proxy_hcheck (自 2.4.21 起可用)
支持遠(yuǎn)程代理后端服務(wù)器的獨(dú)立動態(tài)健康檢查。
mod_brotli (自 2.4.26 起可用)
支持 Brotli 壓縮算法。
mod_md (自 2.4.30 起可用)
支持 ACME 協(xié)議,實(shí)現(xiàn)證書自動配置。
mod_proxy_uwsgi (自 2.4.30 起可用)
.UWSGI 網(wǎng)關(guān)模塊mod_proxy。
mod_socache_redis (自 2.4.39 起可用)
支持基于Redis的共享對象緩存提供程序。
mod_systemd (自 2.4.42 起可用)
系統(tǒng)集成。它允許在帶有 systemd 的服務(wù)中使用 httpd Type=notify。

模塊增強(qiáng)

mod_ssl
mod_ssl現(xiàn)在可以配置為使用 OCSP 服務(wù)器來檢查客戶端證書的驗證狀態(tài)。默認(rèn)響應(yīng)者是可配置的,以及是否首選客戶端證書中指定的響應(yīng)者的決定。
mod_ssl 現(xiàn)在還支持 OCSP 裝訂,其中服務(wù)器主動獲取其證書的 OCSP 驗證,并在握手期間將其傳輸?shù)娇蛻舳恕?/dd>
mod_ssl 現(xiàn)在可以配置為通過 memcached 在服務(wù)器之間共享 SSL 會話數(shù)據(jù)
除了 RSA 和 DSA 之外,現(xiàn)在還支持 EC 密鑰。
支持 TLS-SRP(在 2.4.4 及更高版本中可用)。
mod_proxy
ProxyPass指令現(xiàn)在在Locationor LocationMatch 塊中進(jìn)行了最佳配置 ,并且在大量出現(xiàn)時提供了比傳統(tǒng)雙參數(shù)語法顯著的性能優(yōu)勢。
用于代理請求的源地址現(xiàn)在是可配置的。
支持到后端的 Unix 域套接字(在 2.4.7 及更高版本中可用)。
mod_proxy_balancer
通過 balancer-manager 對 BalancerMembers 進(jìn)行更多運(yùn)行時配置更改
可以在運(yùn)行時通過 balancer-manager 添加額外的 BalancerMembers
Balancer 參數(shù)子集的運(yùn)行時配置
BalancerMembers 可以設(shè)置為“Drain”,以便它們只響應(yīng)現(xiàn)有的粘性會話,允許它們優(yōu)雅地脫機(jī)。
重新啟動后平衡器設(shè)置可以保持不變。
mod_cache
mod_cacheCACHE濾波器可以在所述過濾器鏈中的給定點(diǎn)可以任選插入,以提供對高速緩存精細(xì)控制。
mod_cache 現(xiàn)在可以緩存 HEAD 請求。
在可能的情況下,mod_cache現(xiàn)在可以為每個目錄而不是每個服務(wù)器設(shè)置指令。
可以自定義緩存 URL 的基本 URL,以便緩存集群可以共享相同的端點(diǎn) URL 前綴。
mod_cache 現(xiàn)在能夠在后端不可用時提供陳舊的緩存數(shù)據(jù)(錯誤 5xx)。
mod_cache 現(xiàn)在可以將 HIT/MISS/REVALIDATE 插入 X-Cache 標(biāo)頭中。
mod_include
支持 'include' 元素中的 'onerror' 屬性,允許在出現(xiàn)錯誤時提供錯誤文檔而不是默認(rèn)錯誤字符串。
mod_cgimod_includemod_isapi, ...
標(biāo)頭到環(huán)境變量的轉(zhuǎn)換比以前更嚴(yán)格,以通過標(biāo)頭注入減輕一些可能的跨站點(diǎn)腳本攻擊。包含無效字符(包括下劃線)的標(biāo)題名稱不再轉(zhuǎn)換為環(huán)境變量。Apache 中的環(huán)境變量有一些關(guān)于如何解決需要此類標(biāo)頭的損壞的舊客戶端的指示。(這會影響所有使用這些環(huán)境變量的模塊。)
mod_authz_core 授權(quán)邏輯容器
現(xiàn)在可以使用 Require指令和相關(guān)的容器指令(例如 <RequireAll>.
mod_rewrite
mod_rewrite添加[QSD] (Query String Discard) 和[END]標(biāo)志 RewriteRule以簡化常見的重寫場景。
添加了在RewriteCond.
允許將 SQL 查詢用作RewriteMap函數(shù)。
mod_ldapmod_authnz_ldap
mod_authnz_ldap 添加對嵌套組的支持。
mod_ldap在處理超時方面添加了 LDAPConnectionPoolTTL、 LDAPTimeout和其他改進(jìn)。這對于有狀態(tài)防火墻丟棄與 LDAP 服務(wù)器的空閑連接的設(shè)置特別有用。
mod_ldapLDAPLibraryDebug使用的 LDAP 工具包提供的調(diào)試信息添加 到日志中。
mod_info
mod_info 現(xiàn)在可以在服務(wù)器啟動期間將預(yù)解析的配置轉(zhuǎn)儲到標(biāo)準(zhǔn)輸出。
mod_auth_basic
用于偽造基本身份驗證的新通用機(jī)制(在 2.4.5 及更高版本中可用)。

程序增強(qiáng)

fcgistarter
新的 FastCGI 守護(hù)程序啟動實(shí)用程序
htcacheclean
現(xiàn)在可以列出當(dāng)前緩存的 URL,包括可選的元數(shù)據(jù)。
允許從緩存中顯式刪除單個緩存的 URL。
文件大小現(xiàn)在可以四舍五入到給定的塊大小,使大小限制更接近于磁盤上的實(shí)際大小。
緩存大小現(xiàn)在可以受 inode 數(shù)量的限制,而不是受磁盤上文件大小的限制。
rotatelogs
現(xiàn)在可以創(chuàng)建指向當(dāng)前日志文件的鏈接。
現(xiàn)在可以調(diào)用自定義旋轉(zhuǎn)后腳本。
htpasswdhtdbm
支持 bcrypt 算法(在 2.4.4 及更高版本中可用)。

文檔

mod_rewrite
mod_rewrite文檔已重新排列并幾乎完全重寫,重點(diǎn)是示例和常見用法,以及向您展示其他解決方案何時更合適。該重寫指南現(xiàn)在有更多的細(xì)節(jié)和更好的組織的頂層部分。
mod_ssl
mod_ssl文檔已大大增強(qiáng),與更多的例子在入門級別,除了過去注重技術(shù)細(xì)節(jié)。
緩存指南
該緩存指南已經(jīng)被改寫為RFC2616 HTTP / 1.1緩存由提供的特征正確區(qū)分mod_cache,并通過所提供的類屬鍵/值緩存socache 接口,以及到專門蓋通過了高速緩存,等機(jī)制提供mod_file_cache。

模塊開發(fā)人員更改

添加檢查配置掛鉤
添加了一個新的鉤子 ,check_config它在pre_configopen_logs 鉤子之間運(yùn)行。它test_config-t選項傳遞到 時,它也會在鉤子之前運(yùn)行httpd。該check_config鉤子允許模塊查看相互依賴的配置指令值并調(diào)整它們,同時消息仍然可以記錄到控制臺。因此,在核心open_logs鉤子函數(shù)將控制臺輸出重定向到錯誤日志之前,用戶可以收到錯誤配置問題的警報。
添加了表達(dá)式解析器
我們現(xiàn)在有一個通用表達(dá)式解析器,它的 API 在ap_expr.h公開。這改編自先前在 中實(shí)現(xiàn)的表達(dá)式解析器 mod_ssl。
授權(quán)邏輯容器
授權(quán)模塊現(xiàn)在通過 ap_register_auth_provider() 注冊為提供者,以支持高級授權(quán)邏輯,例如<RequireAll>.
小對象緩存接口
ap_socache.h頭暴露用于緩存較小的數(shù)據(jù)對象,基于先前實(shí)施的基于提供程序的接口mod_ssl會話緩存。當(dāng)前支持使用共享內(nèi)存循環(huán)緩沖區(qū)、基于磁盤的 dbm 文件和 memcache 分布式緩存的提供程序。
添加了緩存狀態(tài)掛鉤
mod_cache模塊現(xiàn)在包含一個新的 cache_status鉤子,當(dāng)知道緩存決定時會調(diào)用它。提供了一個默認(rèn)實(shí)現(xiàn),它向響應(yīng)添加了一個可選的X-Cache和 X-Cache-Detail標(biāo)頭。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號