nginx
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.2; ssl_ciphers "CHACHA20+ECDHE:AESGCM+ECDHE:AES+ECDHE:CAMELLIA+ECDHE:!ADH:!AECDH:!DSS:!ECDSA:!MD5:!SHA1"; ssl_session_cache shared:SSL:30m; ssl_session_timeout 30m;
這跟其他網站上建議的有些差異:
- 直接關掉
TLSv1.1
: - 因為就瀏覽器安全性來說,應該使用
TLSv1.2
,就相容性來說,則是使用TLSv1.0
,而目前沒有看到需要開TLSv1.1
才會動情況,直接關掉反而可以避免nginx實做TLSv1.1
有問題時的風險(因為用的人少,眼球會比較少,這個協定風險反而比另外兩個高)。 - 試著支援非NIST架構的協定:
- 目前cipher都是NIST所選出的協定,所以還是多選了ChaCha20與Camellia讓使用者可以用。
範例
這邊是/etc/nginx/sites-available/default
的內容,配合Dehydrated的需求:
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /srv/www/public;
index index.html;
server_name _;
location /.well-known/acme-challenge/ {
alias /var/www/dehydrated/;
}
}
快速安裝
sudo apt install -y nginx-full; echo -e "#\nserver {\n listen 80 default_server;\n listen [::]:80 default_server;\n root /srv/www/public;\n index index.html;\n server_name _;\n\n location /.well-known/acme-challenge/ {\n alias /var/www/dehydrated/;\n }\n}" | sudo tee /etc/nginx/sites-available/default; cd /etc/nginx; sudo uudecode <<"EOF"
begin 644 conf.d.tgz
M'XL(`!-KGEX``^V976_:,!2&N<ZO,+12+R82QW$2+5PA6HU)K5:-7FR:)BM-
M'(B:Q)GMT-)I_WTV'_V:UF@:4*WS(\`YL0^$^+SG&).P*K-3)V'E95[1E`A1
MV(DZU]DB4!%@O&P53UN(?-AQ/=<-`Q\&T.M`%R,/=0#<YD7\CD;(F`/0X8S)
MY\:U]?^C'%@%FY*,\3*6X&$4@*-#3DLF*8G3E(,^V)B-H!Q\.91Y24G!DKCX
M"GJJ[UM#A>R!0W4[92/`X25+%^1R(:D@@E92C9E)61-.,\HI[VUL_6XDGJH1
MVE<4I.9,LH05SM)*\GI&^='`>NG[]%I)5OJ?WN;UUG6_H4W_+O*4_GV(W!!C
M7^L?^=@S^M\'>N*)TGU-"CJG!7@[L):GY**F`N2EDJ8SKU*[S!/.!,NDG:LP
M67?<]+6Q]IC'?`&T]=)?R?`'K/6O<S&[6>PF!;3I'WI^QT5AB+P@1-A5^O<\
M9.K_7LAB(9-I3NJ8QR487UR<D_./'SY]!KV>4?)_P%K_]6QWY;]5_SC4]3_`
M(0Y\+T"Z_F/H&_WO@P.KJ87D5(E?Q4`(P7<+*-2J?*Z6^4V5WT0.;RH=(/H9
MVK"?U:4M6'(UL'Y83]S=5G?W.7?4ZHZ><_=:W;WGW'&K.W[D_M)3MQ76^A<T
M:7@N=[,`:*W_Z+[^>S#0]5__###ZWP,'UBK<B617M!*`99FI^_\1=_I?!D$5
MEY3,8C$CETUR1241^2W]ZYS0JG^,[O6/0J7_T%=IP.A_#SR8>/'+S(,`FV3P
MNMGH?P?;_G>TKO]=O?\?>,C'(0SQ:OWO&OWO@P.@MWY$Y#C7U]<VS3*;\:F3
M4EH7>74E'`1=WX'843VBW]1I+&G:5]'2U]&23QL>RYQ5UL.=>P$N3B=SUT;K
MUAM8]UOY`O1&XZ%Z(/CF9'0\/HF&)Y-WH[-[8WTT&IZ=G)Z^'Z[-[O!XK%ZT
M$76/)Y.HJPXGPZA[=NQ'W<EXZ/96'R.H$.J*2!(G,PK$+.8TC2:3T\B#Y>,1
@^A\,UDBP['CI>3`8#`:#P6`P&`R&7?,3;5<`+P`H````
`
end
EOF
sudo tar zxvf conf.d.tgz; sudo rm conf.d.tgz; sudo pkill -1 nginx
外部連結
- 官方網站 (英文)
- NGINX Stable : 「Nginx」 team (英文)
- NGINX Mainline : 「Nginx」 team (英文)