「Nginx」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
本頁面具有訪問限制。如果您看見此訊息,這代表您沒有訪問本頁面的權限。
→‎Log
→‎SSL
(未顯示同一使用者於中間所作的 12 次修訂)
行 3: 行 3:


== 安裝 ==
== 安裝 ==
 在[[Ubuntu]]上除了內建版本外(在16.04是1.10.3),也 有PPA 可以安裝新
 在[[Ubuntu]]上除了內建版本外(在16.04 上內建的 是1.10.3), 另外官方 有維護PPA 可以安裝 (版本較 ):
 
* [https://packages.ubuntu.com/search?keywords=nginx Ubuntu – Package Search Results -- nginx]
* [https://launchpad.net/~nginx/+archive/ubuntu/stable NGINX Stable : “Nginx” team]
* [https://launchpad.net/~nginx/+archive/ubuntu/development NGINX Mainline : “Nginx” team]
 
有<code>nginx-light</code>(basic version)、<code>nginx-full</code>(standard version)、<code>nginx-extras</code>(extended version)可以安裝,一般裝<code>nginx-full</code>算是夠用


== 設定 ==
== 設定 ==
行 19: 行 25:
<pre>
<pre>
ssl_protocols TLSv1 TLSv1.2;
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+CAMELLIA:DH+CAMELLIA:!ADH:!AECDH:!DSS:!ECDSA:!MD5"
ssl_ciphers "CHACHA20+ECDHE:AESGCM+ECDHE:AES+ECDHE:CAMELLIA+ECDHE:!ADH:!AECDH:!DSS:!ECDSA:!MD5:!SHA1";
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_cache shared:SSL:30m;
ssl_session_cache shared:SSL:30m;
ssl_session_timeout 30m;
ssl_session_timeout 30m;
行 28: 行 33:
; 直接關掉<code>TLSv1.1</code>:
; 直接關掉<code>TLSv1.1</code>:
: 因為就瀏覽器安全性來說,應該使用<code>TLSv1.2</code>,就相容性來說,則是使用<code>TLSv1.0</code>,而目前沒有看到需要開<code>TLSv1.1</code>才會動情況,直接關掉反而可以避免nginx實做<code>TLSv1.1</code>有問題時的風險(因為用的人少,眼球會比較少,這個協定風險反而比另外兩個高)。
: 因為就瀏覽器安全性來說,應該使用<code>TLSv1.2</code>,就相容性來說,則是使用<code>TLSv1.0</code>,而目前沒有看到需要開<code>TLSv1.1</code>才會動情況,直接關掉反而可以避免nginx實做<code>TLSv1.1</code>有問題時的風險(因為用的人少,眼球會比較少,這個協定風險反而比另外兩個高)。
; 調低SHA-1(<code>SHA</code>)優先權:
: 因為目前還是有瀏覽器不支援較新的<code>SHA256</code>(配合<code>AES128</code>)或<code>SHA384</code>(配合<code>AES256</code>),所以還是得支援SHA-1,但優先權儘量排低。
; 試著支援非NIST架構的協定:
; 試著支援非NIST架構的協定:
: 目前cipher都是NIST所選出的協定,所以還是多選 了Camellia(<code>CAMELLIA128</code>) 讓使用者可以用。 之後會規劃將ChaCha20+Poly1305放入列表(還在觀察 尤其是行動裝置上對AES 硬體加速支援反而使得ChaCha20+Poly1305未必比較快)。
: 目前cipher都是NIST所選出的協定,所以還是多選 了ChaCha20與Camellia 讓使用者可以用。
 
== 範例 ==
 
這邊是<code>/etc/nginx/sites-available/default</code>的內容 配合[[Dehydrated]] 需求:
<syntaxhighlight lang="nginx">
#
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/;
   }
}
</syntaxhighlight>


== 外部連結 ==
== 外部連結 ==
* {{Official|https://nginx.org/}} {{en}}
* {{Official|https://nginx.org/}} {{en}}
* [https://launchpad.net/~nginx/+archive/ubuntu/stable NGINX Stable : “Nginx” team] {{en}}
* [https://launchpad.net/~nginx/+archive/ubuntu/development NGINX Mainline : “Nginx” team] {{en}}


[[Category:軟體]]
[[Category:軟體]]

於 2019年1月29日 (二) 04:56 的修訂

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

外部連結