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 "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/;
    }
}

外部链接