nginx

来自Gea-Suan Lin's Wiki
跳转至: 导航搜索

nginx是一套網頁伺服器,在效能與設定彈性上取得不錯的平衡點。

安裝

Ubuntu上除了內建版本外(在16.04上內建的是1.10.3),另外官方也有維護PPA可以安裝(版本較新):

nginx-light(basic version)、nginx-full(standard version)、nginx-extras(extended version)可以安裝,一般裝nginx-full算是夠用。

設定

Log

我希望記錄使用者在HTTPS環境下用的TLS Protocol與Cipher,所以將這兩個資訊放到Log內。

/etc/nginx/conf.d/combined_ssl.conf內的設定如下:

#
log_format combined_ssl '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $ssl_protocol/$ssl_cipher';

SSL

/etc/nginx/conf.d/ssl.conf內的設定如下:

ssl_protocols TLSv1 TLSv1.2;
ssl_ciphers "ECDH+AESGCM+AES256:DH+AESGCM+AES256:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES:DH+AES:ECDH+CHACHA20:DH+CHACHA20:ECDH+CAMELLIA:DH+CAMELLIA:!ADH:!AECDH:!DSS:!ECDSA:!MD5"
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_cache shared:SSL:30m;
ssl_session_timeout 30m;

這跟其他網站上建議的有些差異:

直接關掉TLSv1.1
因為就瀏覽器安全性來說,應該使用TLSv1.2,就相容性來說,則是使用TLSv1.0,而目前沒有看到需要開TLSv1.1才會動情況,直接關掉反而可以避免nginx實做TLSv1.1有問題時的風險(因為用的人少,眼球會比較少,這個協定風險反而比另外兩個高)。
調低SHA-1(SHA)優先權:
因為目前還是有瀏覽器不支援較新的SHA256(配合AES128)或SHA384(配合AES256),所以還是得支援SHA-1,但優先權儘量排低。
試著支援非NIST架構的協定:
目前cipher都是NIST所選出的協定,所以還是多選了Camellia(CAMELLIA128)讓使用者可以用。之後會規劃將ChaCha20+Poly1305放入列表(還在觀察,尤其是行動裝置上對AES的硬體加速支援反而使得ChaCha20+Poly1305未必比較快)。

外部連結