天天看點

或許是 Nginx 上配置 HTTP2 最實在的教程了前言介紹配置配置進階

從 2015 年 5 月 14 日 http/2 協定正式版的釋出到現在已經快有一年了,越來越多的網站部署了 http2,http2 的廣泛應用帶來了更好的浏覽體驗,隻要是 modern 浏覽器都支援,是以部署 http2 并不會帶來太多困擾。

雖然 h2 有 h2c (http/2 cleartext) 可以通過非加密通道傳輸,但是支援的浏覽器初期還是比較少的,是以目前部署 h2 還是需要走加密的,不過由于 let’s encrypt 大力推行免費證書和證書的廉價化,部署 h2 的成本并不高。

http 2.0即超文本傳輸協定 2.0,是下一代http協定。是由網際網路工程任務組(ietf)的hypertext transfer protocol bis (httpbis)工作小組進行開發。是自1999年http1.1釋出後的首個更新。

http/2 協定是從 spdy 演變而來,spdy 已經完成了使命并很快就會退出曆史舞台(例如 chrome 将在「2016 年初結束對 spdy 的支援」;nginx、apache 也已經全面支援 http/2 ,并也不再支援 spdy)。

一般的大家把 http2 簡稱為 h2,盡管有些朋友可能不怎麼願意,但是這個簡稱已經預設化了,特别是展現在浏覽器對 http2 都是這個簡寫的。

普通的 https 網站浏覽會比 http 網站稍微慢一些,因為需要處理加密任務,而配置了 h2 的 https,在低延時的情況下速度會比 http 更快更穩定!

現在電信劫持事件頻發,網站部署了 https 加密後可以杜絕大部分劫持,但不是完全。像電子商務行業對 https 加密可是标配啊,是以部署 h2 更是勢在必行。

這裡是 免費和便宜 ssl 證書介紹 ,大家可以從這裡購買或者申請免費的 ssl 證書,免得 chrome 彈出紅色的頁面令人不悅,進而拒絕了大多數訪客。

預設編譯的 nginx 并不包含 h2 子產品,我們需要加入參數來編譯,截止發文,nginx 1.9 開發版及以上版本源碼需要自己加入編譯參數,從軟體源倉庫下載下傳的則預設編譯。 tengine 可以同時部署 h2 和 spdy 保證相容性,nginx 則是一刀切不再支援 spdy。

如果你編譯的 nginx 不支援,那麼在 <code>./configure</code> 中加入:<code>--with-http_v2_module</code> ,如果沒有 ssl 支援,還需要加入 <code>--with-http_ssl_module</code>

然後 <code>make &amp;&amp; make install</code> 即可。

主要是配置 nginx 的 <code>server</code> 塊, 。

修改相關虛拟機的 <code>.conf</code> 檔案,一般在 <code>/usr/local/nginx/conf/vhost/</code> 或者 <code>/etc/nginx/conf/</code>,具體參考你的環境指導,不懂請回複。

注:将 <code>server_name www.mf8.biz;</code> 中的 <code>www.mf8.biz</code> 替換為你的域名。

然後通過 <code>/usr/local/nginx/sbin/nginx -t</code> 或者 <code>nginx -t</code> 來檢測是否配置正确,然後重新開機 nginx ,即可。

在 chrome 浏覽器上可以通過,http/2 and spdy indicator 來檢驗,如果位址欄出現藍色的閃電就是 h2

也可以在 chrome://net-internals/#http2 中檢查。注意版本要新,姿勢要帥!

大家都知道去年的心血漏洞将 ssl 推到了風口浪尖,是以單單支援了 h2 ,我們任然需要對 ssl 做一些安全的優化!

配置赫爾曼密鑰

禁止不安全的 ssl 協定,使用安全協定

<code>ssl_protocols tlsv1 tlsv1.1 tlsv1.2;</code>

禁止已經不安全的加密算法

<code>ssl_ciphers 'ecdhe-rsa-aes256-gcm-sha384:ecdhe-rsa-aes128-gcm-sha256:dhe-rsa-aes256-gcm-sha384:dhe-rsa-aes128-gcm-sha256:ecdhe-rsa-aes256-sha384:ecdhe-rsa-aes128-sha256:ecdhe-rsa-aes256-sha:ecdhe-rsa-aes128-sha:dhe-rsa-aes256-sha256:dhe-rsa-aes128-sha256:dhe-rsa-aes256-sha:dhe-rsa-aes128-sha:ecdhe-rsa-des-cbc3-sha:edh-rsa-des-cbc3-sha:aes256-gcm-sha384:aes128-gcm-sha256:aes256-sha256:aes128-sha256:aes256-sha:aes128-sha:des-cbc3-sha:high:!anull:!enull:!export:!camellia:!des:!md5:!psk:!rc4';</code>

緩解 beast 攻擊

server {

listen 80;

add_header strict-transport-security max-age=15768000;

return 301 https://www.yourwebsite.com$request_uri;

}

ssl_session_cache shared:ssl:20m;

ssl_session_timeout 60m;

ssl_stapling on;

ssl_stapling_verify on;

ssl_trusted_certificate /etc/nginx/cert/trustchain.crt;

resolver 233.5.5.5 233.6.6.6 valid=300s;

繼續閱讀