Update: 由於 OpenSSL CVE-2014-0160 Heartbleed Security,請將 openssl 升級到 1.0.1g 版本
很高興看到 Nginx Release 1.4.0 版本,此新版本開始支援 SPDY module,對於 SPDY 還不熟悉了解的,可以參考今年 2013 WebConf 講師 ihower 介紹的 A brief introduction to SPDY - 邁向 HTTP/2.0,要提升整個 Web Performance,可以將 SPDY 導入,對於使用 Apache 使用者,請參考 mod_spdy,如果是 Nginx 用戶,在 1.3.x 版本,可以直接用官方 patch,升級到 1.4.x 就不需要 patch 了,但 OS 是 Ubuntu 或 CentOS 系列是需要自行編譯,這次會筆記在 CentOS 下將 spdy 編譯進系統。
安裝方式
先看 Ngix 是否有支援 spdy,直接下 nginx -V 觀看
nginx version: nginx/1.1.19 TLS SNI support enabled configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –erth=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-lb/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path==/var/run/nginx.pid –with-debug –with-http_addition_module –with-http_dav_moith-http_image_filter_module –with-http_realip_module –with-http_stub_status__xslt_module –with-ipv6 –with-sha1=/usr/include/openssl –with-md5=/usr/includ/buildd/nginx-1.1.19/debian/modules/nginx-auth-pam –add-module=/build/buildd/d/nginx-1.1.19/debian/modules/nginx-upstream-fair –add-module=/build/buildd/ng
看到上述結果,沒有發現
http_spdy_module 模組,代表並無編譯進去,底下安裝過程,是基於 CentOS 6.4 Release 環境。安裝前請先下載 Nginx 1.4.0 及 openssl 1.0.1g 版本。
# generate makefile cd /tmp/nginx-1.4.7 && ./configure \ --prefix=/usr/share/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --user=nginx \ --group=nginx \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module \ --with-http_image_filter_module \ --with-http_geoip_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gzip_static_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_stub_status_module \ --with-http_perl_module \ --with-mail \ --with-mail_ssl_module \ --with-http_ssl_module \ --with-http_spdy_module \ --with-openssl=/tmp/openssl-1.0.1g cd /tmp/nginx-1.4.7 && make && make install
比較需要注意的事,假如系統已經安裝好 nginx 版本,預設執行程式會在 /usr/sbin/nginx,所以編譯時,請務必指定此路徑蓋掉原有的執行檔,這樣系統還是可以透過 init.d 啟動或關閉 nginx。
啟動 spdy 模組
為了將 https 及 spdy 同時 listen 443 port,OpenSSL 務必支援 Next Protocol Negotiation,所以版本要 1.0.1 以上。在 nginx.conf 設定如下
server { listen 443 ssl spdy;ssl_certificate server.crt; ssl_certificate_key server.key; ...
}
偵測伺服器是否支援 spdy
經過安裝完成 Nginx with spdy module,要確定伺服器有無支援,可以透過 Firefox addon 或 Chrome extension,底下是 SPDY indicator 下載連結
要如何測試呢?打開 Chrome 瀏覽器,輸入 Google 網址,你會發現網址列多一個綠色勾勾,那就代表伺服器有支援 SPDY Module。
See also
- 用 Nginx 來架設線上即時縮圖機
- 從 Nginx 換到 Caddy
- 在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證
- Caddy 搭配 Drone 伺服器設定
- 申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2
- 將 wordpress 強制使用 SSL 連線
- Letsencrypt 開放申請免費 SSL 憑證
- Ngnix 搭配 PHP-FPM 噴 php5-fpm.sock failed (13: Permission denied)
- 在 Ubuntu 或 Debian 上跑 Ruby on Rails + Nginx
- Jenkins + Nginx User Auth