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

外部连结