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內的設定如下:

# https://www.eff.org/deeplinks/2015/04/effs-updated-ssl-configuration
ssl_protocols TLSv1.2 TLSv1.3;
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

外部連結