詳解為新版Apache服務(wù)器開啟HTTP/2支持的方法
HTTP 2.0簡(jiǎn)介
HTTP 2.0即超文本傳輸協(xié)議 2.0,是下一代HTTP協(xié)議。是由互聯(lián)網(wǎng)工程任務(wù)組(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小組進(jìn)行開發(fā)。是自1999年http1.1發(fā)布后的首個(gè)更新。HTTP 2.0在2013年8月進(jìn)行首次合作共事性測(cè)試。在開放互聯(lián)網(wǎng)上HTTP 2.0將只用于https://網(wǎng)址,而 http://網(wǎng)址將繼續(xù)使用HTTP/1,目的是在開放互聯(lián)網(wǎng)上增加使用加密技術(shù),以提供強(qiáng)有力的保護(hù)去遏制主動(dòng)攻擊。DANE RFC6698允許域名管理員不通過第三方CA自行發(fā)行證書。
IETF會(huì)讓所有互聯(lián)網(wǎng)通路默認(rèn)選擇的方式來引入加密,互聯(lián)網(wǎng)專家們將新一代加密協(xié)議稱為“HTTP 2.0”。
協(xié)議目標(biāo):
- 異步連接多路復(fù)用;
- 頭部壓縮;
- 請(qǐng)求/響應(yīng)管線化;
保持與HTTP 1.1語義的向后兼容性也是該版本的一個(gè)關(guān)鍵目標(biāo)。SPDY是一種HTTP兼容協(xié)議,由Google發(fā)起,Chrome、Opera、Firefox以及Amazon Silk等瀏覽器均已提供支持。HTTP實(shí)現(xiàn)的瓶頸之一是其并發(fā)要依賴于多重連接。HTTP管線化技術(shù)可以緩解這個(gè)問題,但也只能做到部分多路復(fù)用。此外,已經(jīng)證實(shí),由于存在中間干擾,瀏覽器無法采用管線化技術(shù)。SPDY在單個(gè)連接之上增加了一個(gè)幀層,用以多路復(fù)用多個(gè)并發(fā)流。幀層針對(duì)HTTP類的請(qǐng)求響應(yīng)流進(jìn)行了優(yōu)化,因此運(yùn)行在HTTP之上的應(yīng)用,對(duì)應(yīng)用開發(fā)者而言只要很小的修改甚至無需修改就可以運(yùn)行在SPDY之上。SPDY對(duì)當(dāng)前的HTTP協(xié)議有4個(gè)改進(jìn):
- 多路復(fù)用請(qǐng)求;
- 對(duì)請(qǐng)求劃分優(yōu)先級(jí);
- 壓縮HTTP頭;
- 服務(wù)器推送流(即Server Push技術(shù));
SPDY試圖保留HTTP的現(xiàn)有語義,所以cookies、ETags等特性都是可用的。[3]
如何在 Apache 中啟用 HTTP/2
剛發(fā)布的 Apache httpd 2.4.17 終于支持 HTTP/2 了。這個(gè)頁面給出了一些如何構(gòu)建/部署/配置的建議。目的是為了大家發(fā)現(xiàn) bugs 時(shí)能升級(jí)它,或者給一些能更好工作的建議。
最后,這會(huì)歸并回到官方 Apache 文檔,這里只會(huì)留下一個(gè)到那里的鏈接。暫時(shí)我們還沒做到。
編譯支持 HTTP/2
在你編譯版本之前,你要進(jìn)行一些配置。這里有成千上萬的選項(xiàng)。和 HTTP/2 相關(guān)的是:
--enable-http2
啟用在 Apache 服務(wù)器內(nèi)部實(shí)現(xiàn)該協(xié)議的 ‘http2' 模塊。
--with-nghttp2=<dir>
指定 http2 模塊需要的 libnghttp2 模塊的非默認(rèn)位置。如果 nghttp2 是在默認(rèn)的位置,配置過程會(huì)自動(dòng)采用。
--enable-nghttp2-staticlib-deps
很少用到的選項(xiàng),你可能想將 nghttp2 庫靜態(tài)鏈接到服務(wù)器里。在大部分平臺(tái)上,只有在找不到共享 nghttp2 庫時(shí)才有用。
如果你想自己編譯 nghttp2,你可以到 nghttp2.org 查看文檔。最新的 Fedora 以及其它版本已經(jīng)附帶了這個(gè)庫。
TLS 支持
大部分人想在瀏覽器上使用 HTTP/2, 而瀏覽器只在使用 TLS 連接(https:// 開頭的 url)時(shí)才支持 HTTP/2。你需要一些我下面介紹的配置。但首先你需要的是支持 ALPN 擴(kuò)展的 TLS 庫。
ALPN 用來協(xié)商negotiate服務(wù)器和客戶端之間的協(xié)議。如果你服務(wù)器上 TLS 庫還沒有實(shí)現(xiàn) ALPN,客戶端只能通過 HTTP/1.1 通信。那么,可以和 Apache 鏈接并支持它的是什么庫呢?
OpenSSL 1.0.2 及其以后。
??? (別的我也不知道了)
如果你的 OpenSSL 庫是 Linux 版本自帶的,這里使用的版本號(hào)可能和官方 OpenSSL 版本的不同。如果不確定的話檢查一下你的 Linux 版本吧。
配置
另一個(gè)給服務(wù)器的好建議是為 http2 模塊設(shè)置合適的日志等級(jí)。添加下面的配置:
# 放在某個(gè)地方的這樣一行 LoadModule http2_module modules/mod_http2.so <IfModule http2_module> LogLevel http2:info </IfModule>
當(dāng)你啟動(dòng)服務(wù)器的時(shí)候,你可以在錯(cuò)誤日志中看來類似的一行:
[timestamp] [http2:info] [pid XXXXX:tid numbers] mod_http2 (v1.0.0, nghttp2 1.3.4), initializing...
協(xié)議
那么,假設(shè)你已經(jīng)編譯部署好了服務(wù)器, TLS 庫也是最新的,你啟動(dòng)了你的服務(wù)器,打開了瀏覽器。。。你怎么知道它在工作呢?
如果除此之外你沒有添加其它的服務(wù)器配置,很可能它沒有工作。
你需要告訴服務(wù)器在哪里使用該協(xié)議。默認(rèn)情況下,你的服務(wù)器并沒有啟動(dòng) HTTP/2 協(xié)議。因?yàn)檫@樣比較安全,也許才能讓你已有的部署可以繼續(xù)工作。
你可以用新的 Protocols 指令啟用 HTTP/2 協(xié)議:
# 對(duì)于 https 服務(wù)器 Protocols h2 http/1.1 ... # 對(duì)于 http 服務(wù)器 Protocols h2c http/1.1
你可以給整個(gè)服務(wù)器或者指定的 vhosts 添加這個(gè)配置。
SSL 參數(shù)
對(duì)于 TLS (SSL),HTTP/2 有一些特殊的要求。閱讀下面的“ https:// 連接”一節(jié)了解更詳細(xì)的信息。
http:// 連接 (h2c)
盡管現(xiàn)在還沒有瀏覽器支持,但是 HTTP/2 協(xié)議也工作在 http:// 這樣的 url 上, 而且 mod_h[ttp]2 也支持。啟用它你唯一所要做的是在 Protocols 配置中啟用它:
# 對(duì)于 http 服務(wù)器 Protocols h2c http/1.1
這里有一些支持 h2c 的客戶端(和客戶端庫)。我會(huì)在下面介紹:
curl
Daniel Stenberg 維護(hù)的用于訪問網(wǎng)絡(luò)資源的命令行客戶端 curl 當(dāng)然支持。如果你的系統(tǒng)上有 curl,有一個(gè)簡(jiǎn)單的方法檢查它是否支持 http/2:
sh> curl -V curl 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
不好了。這些功能中沒有 'HTTP2'。你想要的是下面這樣:
sh> curl -V url 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets
如果你的 curl 支持 HTTP2 功能,你可以用一些簡(jiǎn)單的命令檢查你的服務(wù)器:
sh> curl -v --http2 http://<yourserver>/ ... > Connection: Upgrade, HTTP2-Settings > Upgrade: h2c > HTTP2-Settings: AAMAAABkAAQAAP__ > < HTTP/1.1 101 Switching Protocols < Upgrade: h2c < Connection: Upgrade * Received 101 * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) ... <the resource>
恭喜,如果看到了有 ...101 Switching... 的行就表示它正在工作!
有一些情況不會(huì)發(fā)生 HTTP/2 的升級(jí)切換Upgrade。如果你的第一個(gè)請(qǐng)求有請(qǐng)求數(shù)據(jù)body,例如你上傳一個(gè)文件時(shí),就不會(huì)觸發(fā)升級(jí)切換。h2c 限制部分有詳細(xì)的解釋。
nghttp
nghttp2 可以一同編譯它自己的客戶端和服務(wù)器。如果你的系統(tǒng)中有該客戶端,你可以簡(jiǎn)單地通過獲取一個(gè)資源來驗(yàn)證你的安裝:
sh> nghttp -uv http://<yourserver>/ [ 0.001] Connected [ 0.001] HTTP Upgrade request ... Connection: Upgrade, HTTP2-Settings Upgrade: h2c HTTP2-Settings: AAMAAABkAAQAAP__ ... [ 0.005] HTTP Upgrade response HTTP/1.1 101 Switching Protocols Upgrade: h2c Connection: Upgrade [ 0.006] HTTP Upgrade success ...
這和我們上面 curl 例子中看到的 Upgrade 輸出很相似。
有另外一種在命令行參數(shù)中不用 -u 參數(shù)而使用 h2c 的方法。這個(gè)參數(shù)會(huì)指示 nghttp 進(jìn)行 HTTP/1 升級(jí)切換過程。但如果我們不使用呢?
sh> nghttp -v http://<yourserver>/ [ 0.002] Connected [ 0.002] send SETTINGS frame ... [ 0.002] send HEADERS frame ; END_STREAM | END_HEADERS | PRIORITY (padlen=0, dep_stream_id=11, weight=16, exclusive=0) ; Open new stream :method: GET :path: / :scheme: http ...
連接馬上使用了 HTTP/2!這就是協(xié)議中所謂的直接direct模式,當(dāng)客戶端發(fā)送一些特殊的 24 字節(jié)到服務(wù)器時(shí)就會(huì)發(fā)生:
0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
用 ASCII 表示是:
PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
支持 h2c 的服務(wù)器在一個(gè)新的連接中看到這些信息就會(huì)馬上切換到 HTTP/2。HTTP/1.1 服務(wù)器則認(rèn)為是一個(gè)可笑的請(qǐng)求,響應(yīng)并關(guān)閉連接。
因此,直接模式只適合于那些確定服務(wù)器支持 HTTP/2 的客戶端。例如,當(dāng)前一個(gè)升級(jí)切換過程成功了的時(shí)候。
直接模式的魅力是零開銷,它支持所有請(qǐng)求,即使帶有請(qǐng)求數(shù)據(jù)部分(查看h2c 限制)。
對(duì)于 2.4.17 版本,明文連接時(shí)默認(rèn)啟用 H2Direct 。但是有一些模塊和這不兼容。因此,在下一版本中,默認(rèn)會(huì)設(shè)置為off,如果你希望你的服務(wù)器支持它,你需要設(shè)置它為:
H2Direct on https:// 連接 (h2)
當(dāng)你的 mod_h[ttp]2 可以支持 h2c 連接時(shí),那就可以一同啟用 h2 兄弟了,現(xiàn)在的瀏覽器僅支持它和 https: 一同使用。
HTTP/2 標(biāo)準(zhǔn)對(duì) https:(TLS)連接增加了一些額外的要求。上面已經(jīng)提到了 ALNP 擴(kuò)展。另外的一個(gè)要求是不能使用特定黑名單中的加密算法。
盡管現(xiàn)在版本的 mod_h[ttp]2 不增強(qiáng)這些算法(以后可能會(huì)),但大部分客戶端會(huì)這么做。如果讓你的瀏覽器使用不恰當(dāng)?shù)乃惴ù蜷_ h2 服務(wù)器,你會(huì)看到不明確的警告 INADEQUATE_SECURITY,瀏覽器會(huì)拒接連接。
一個(gè)可行的 Apache SSL 配置類似:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK SSLProtocol All -SSLv2 -SSLv3 ...
(是的,這確實(shí)很長(zhǎng)。)
這里還有一些應(yīng)該調(diào)整,但不是必須調(diào)整的 SSL 配置參數(shù):SSLSessionCache, SSLUseStapling 等,其它地方也有介紹這些。例如 Ilya Grigorik 寫的一篇超贊的博客: 高性能瀏覽器網(wǎng)絡(luò)。
curl
再次回到 shell 使用 curl(查看上面的“curl h2c”章節(jié)了解要求),你也可以通過 curl 用簡(jiǎn)單的命令檢測(cè)你的服務(wù)器:
sh> curl -v --http2 https://<yourserver>/ ... * ALPN, offering h2 * ALPN, offering http/1.1 ... * ALPN, server accepted to use h2 ... <the resource>
恭喜你,能正常工作啦!如果還不能,可能原因是:
你的 curl 不支持 HTTP/2。查看上面的“檢測(cè) curl”一節(jié)。
你的 openssl 版本太低不支持 ALPN。
不能驗(yàn)證你的證書,或者不接受你的算法配置。嘗試添加命令行選項(xiàng) -k 停用 curl 中的這些檢查。如果可以工作,就重新配置你的 SSL 和證書。
nghttp
我們已經(jīng)在 h2c 討論過 nghttp。如果你用它來進(jìn)行 https: 連接,你會(huì)看到類似下面的信息:
sh> nghttp https://<yourserver>/ [ERROR] HTTP/2 protocol was not selected. (nghttp2 expects h2)
這有兩種可能,你可以通過添加 -v 來檢查。如果是:
sh> nghttp -v https://<yourserver>/ [ 0.034] Connected [ERROR] HTTP/2 protocol was not selected. (nghttp2 expects h2)
這意味著你服務(wù)器使用的 TLS 庫沒有實(shí)現(xiàn) ALPN。有時(shí)候正確安裝有點(diǎn)困難。多看看 Stackoverflow 吧。
你看到的也可能是:
sh> nghttp -v https://<yourserver>/ [ 0.034] Connected The negotiated protocol: http/1.1 [ERROR] HTTP/2 protocol was not selected. (nghttp2 expects h2)
這表示 ALPN 能正常工作,但并沒有用 h2 協(xié)議。你需要像上面介紹的那樣檢查你服務(wù)器上的 Protocols 配置。如果一開始在 vhost 部分設(shè)置不能正常工作,試著在通用部分設(shè)置它。
Firefox
你可以在 Firefox 瀏覽器中打開開發(fā)者工具,在那里的網(wǎng)絡(luò)標(biāo)簽頁查看 HTTP/2 連接。當(dāng)你打開了 HTTP/2 并重新刷新 html 頁面時(shí),你會(huì)看到類似下面的東西:
在響應(yīng)頭中,你可以看到奇怪的 X-Firefox-Spdy 條目中列出了 “h2”。這表示在這個(gè) https: 連接中使用了 HTTP/2。
Google Chrome
在 Google Chrome 中,你在開發(fā)者工具中看不到 HTTP/2 指示器。相反,Chrome 用特殊的地址 chrome://net-internals/#http2 給出了相關(guān)信息。(LCTT 譯注:Chrome 已經(jīng)有一個(gè) “HTTP/2 and SPDY indicator” 可以很好的在地址欄識(shí)別 HTTP/2 連接)
如果你打開了一個(gè)服務(wù)器的頁面,可以在 Chrome 中查看那個(gè) net-internals 頁面,你可以看到類似下面這樣:
如果你的服務(wù)器在上面的列表中,就表示它正在工作。
Microsoft Edge
Windows 10 中 Internet Explorer 的繼任者 Edge 也支持 HTTP/2。你也可以在開發(fā)者工具的網(wǎng)絡(luò)標(biāo)簽頁看到 HTTP/2 協(xié)議。
Safari
在 Apple 的 Safari 中,打開開發(fā)者工具,那里有個(gè)網(wǎng)絡(luò)標(biāo)簽頁。重新加載你的服務(wù)器上的頁面,并在開發(fā)者工具中選擇顯示了加載的那行。如果你啟用了在右邊顯示詳細(xì)視圖,看 Status 部分。那里顯示了 HTTP/2.0 200,像這樣:
重新協(xié)商
https: 連接重新協(xié)商是指正在運(yùn)行的連接中特定的 TLS 參數(shù)會(huì)發(fā)生變化。在 Apache httpd 中,你可以在 directory 配置中改變 TLS 參數(shù)。如果進(jìn)來一個(gè)獲取特定位置資源的請(qǐng)求,配置的 TLS 參數(shù)會(huì)和當(dāng)前的 TLS 參數(shù)進(jìn)行對(duì)比。如果它們不相同,就會(huì)觸發(fā)重新協(xié)商。
這種最常見的情形是算法變化和客戶端證書。你可以要求客戶訪問特定位置時(shí)需要通過驗(yàn)證,或者對(duì)于特定資源,你可以使用更安全的、對(duì) CPU 壓力更大的算法。
但不管你的想法有多么好,HTTP/2 中都不可以發(fā)生重新協(xié)商。在同一個(gè)連接上會(huì)有 100 多個(gè)請(qǐng)求,那么重新協(xié)商該什么時(shí)候做呢?
對(duì)于這種配置,現(xiàn)有的 mod_h[ttp]2 還沒有辦法。如果你有一個(gè)站點(diǎn)使用了 TLS 重新協(xié)商,別在上面啟用 h2!
當(dāng)然,我們會(huì)在后面的版本中解決這個(gè)問題,然后你就可以安全地啟用了。
限制
非 HTTP 協(xié)議
實(shí)現(xiàn)除 HTTP 之外協(xié)議的模塊可能和 mod_http2 不兼容。這在其它協(xié)議要求服務(wù)器首先發(fā)送數(shù)據(jù)時(shí)無疑會(huì)發(fā)生。
NNTP 就是這種協(xié)議的一個(gè)例子。如果你在服務(wù)器中配置了 mod_nntp_like_ssl,那么就不要加載 mod_http2。等待下一個(gè)版本。
h2c 限制
h2c 的實(shí)現(xiàn)還有一些限制,你應(yīng)該注意:
在虛擬主機(jī)中拒絕 h2c
你不能對(duì)指定的虛擬主機(jī)拒絕 h2c 直連。連接建立而沒有看到請(qǐng)求時(shí)會(huì)觸發(fā)直連,這使得不可能預(yù)先知道 Apache 需要查找哪個(gè)虛擬主機(jī)。
有請(qǐng)求數(shù)據(jù)時(shí)的升級(jí)切換
對(duì)于有數(shù)據(jù)的請(qǐng)求,h2c 升級(jí)切換不能正常工作。那些是 PUT 和 POST 請(qǐng)求(用于提交和上傳)。如果你寫了一個(gè)客戶端,你可能會(huì)用一個(gè)簡(jiǎn)單的 GET 或者 OPTIONS * 來處理那些請(qǐng)求以觸發(fā)升級(jí)切換。
原因從技術(shù)層面來看顯而易見,但如果你想知道:在升級(jí)切換過程中,連接處于半瘋狀態(tài)。請(qǐng)求按照 HTTP/1.1 的格式,而響應(yīng)使用 HTTP/2 幀。如果請(qǐng)求有一個(gè)數(shù)據(jù)部分,服務(wù)器在發(fā)送響應(yīng)之前需要讀取整個(gè)數(shù)據(jù)。因?yàn)轫憫?yīng)可能需要從客戶端處得到應(yīng)答用于流控制及其它東西。但如果仍在發(fā)送 HTTP/1.1 請(qǐng)求,客戶端就仍然不能以 HTTP/2 連接。
為了使行為可預(yù)測(cè),幾個(gè)服務(wù)器在實(shí)現(xiàn)上決定不在任何帶有請(qǐng)求數(shù)據(jù)的請(qǐng)求中進(jìn)行升級(jí)切換,即使請(qǐng)求數(shù)據(jù)很小。
302 時(shí)的升級(jí)切換
有重定向發(fā)生時(shí),當(dāng)前的 h2c 升級(jí)切換也不能工作??雌饋?mod_http2 之前的重寫有可能發(fā)生。這當(dāng)然不會(huì)導(dǎo)致斷路,但你測(cè)試這樣的站點(diǎn)也許會(huì)讓你迷惑。
h2 限制
這里有一些你應(yīng)該意識(shí)到的 h2 實(shí)現(xiàn)限制:
連接重用
HTTP/2 協(xié)議允許在特定條件下重用 TLS 連接:如果你有帶通配符的證書或者多個(gè) AltSubject 名稱,瀏覽器可能會(huì)重用現(xiàn)有的連接。例如:
你有一個(gè) a.example.org 的證書,它還有另外一個(gè)名稱 b.example.org。你在瀏覽器中打開 URL https://a.example.org/,用另一個(gè)標(biāo)簽頁加載 https://b.example.org/。
在重新打開一個(gè)新的連接之前,瀏覽器看到它有一個(gè)到 a.example.org 的連接并且證書對(duì)于 b.example.org 也可用。因此,它在第一個(gè)連接上面發(fā)送第二個(gè)標(biāo)簽頁的請(qǐng)求。
這種連接重用是刻意設(shè)計(jì)的,它使得使用了 HTTP/1 切分sharding來提高效率的站點(diǎn)能夠不需要太多變化就能利用 HTTP/2。
Apache mod_h[ttp]2 還沒有完全實(shí)現(xiàn)這點(diǎn)。如果 a.example.org 和 b.example.org 是不同的虛擬主機(jī), Apache 不會(huì)允許這樣的連接重用,并會(huì)告知瀏覽器狀態(tài)碼 421 Misdirected Request。瀏覽器會(huì)意識(shí)到它需要重新打開一個(gè)到 b.example.org 的連接。這仍然能工作,只是會(huì)降低一些效率。
- CentOS服務(wù)器apache綁定多個(gè)域名的方法
- Mac版PhpStorm之XAMPP整合apache服務(wù)器配置的圖文教程詳解
- CentOS 6.6安裝配置LAMP服務(wù)器(Apache+PHP5+MySQL)
- Linux Apache Web服務(wù)器安全的8種安全設(shè)置技巧
- 使用Apache打造完美限制的HTTP下載服務(wù)器
- Apache服務(wù)器中.htaccess文件的實(shí)用配置示例集錦
- Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器
- Apache服務(wù)器一個(gè)IP多個(gè)站點(diǎn)的配置方法示例
- Linux下SVN服務(wù)器同時(shí)支持Apache的http和svnserve獨(dú)立服務(wù)器兩種模式且使用相同的訪問權(quán)限賬號(hào)
- Apache服務(wù)器中.htaccess的基本配置總結(jié)
- 配置 Apache 服務(wù)器禁止所有非法域名 訪問自己的服務(wù)器
相關(guān)文章
Linux 下安裝 memcached 及 memcacheq的方法
這篇文章主要介紹了Linux 下安裝 memcached 及 memcacheq的方法,需要的朋友可以參考下2017-03-03linux服務(wù)器校對(duì)時(shí)間方法命令詳解
Linux中有個(gè)ntp包可以自動(dòng)校準(zhǔn)時(shí)間,并且非常好用,這篇文章主要介紹了linux服務(wù)器校對(duì)時(shí)間方法,需要的朋友可以參考下2022-08-08詳解Centos7.2安裝Nginx實(shí)現(xiàn)負(fù)載平衡
本篇文章主要介紹了詳解Centos7.2安裝Nginx實(shí)現(xiàn)負(fù)載平衡,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03linux?系統(tǒng)進(jìn)程管理工具systemd詳解(systemctl命令、創(chuàng)建自己的systemd服務(wù))
Unit?是?Systemd?管理系統(tǒng)資源的基本單元,可以認(rèn)為每個(gè)系統(tǒng)資源就是一個(gè)?Unit,并使用一個(gè)?Unit?文件定義,這篇文章主要介紹了linux?系統(tǒng)進(jìn)程管理工具systemd詳解(systemctl命令、創(chuàng)建自己的systemd服務(wù)),需要的朋友可以參考下2022-12-12Linux運(yùn)維從初級(jí)進(jìn)階為高級(jí)知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了關(guān)于Linux運(yùn)維從初級(jí)進(jìn)階為高級(jí)知識(shí)點(diǎn)總結(jié)內(nèi)容,需要的為朋友們學(xué)習(xí)下。2019-06-06CentOS 7中Nginx日志定時(shí)拆分實(shí)現(xiàn)過程詳解
這篇文章主要介紹了CentOS 7中Nginx日志定時(shí)拆分實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06