Nginx:修订间差异
跳到导航
跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
(→設定) |
(→SSL) |
||
(未显示同一用户的32个中间版本) | |||
第1行: | 第1行: | ||
{{Lowercase}} | {{Lowercase}} | ||
'''nginx'''是一套網頁伺服器,在效能與設定彈性上取得不錯的平衡點。 | |||
== 安裝 == | |||
在[[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>算是夠用。 | |||
== 設定 == | == 設定 == | ||
=== Log === | |||
我希望記錄使用者在HTTPS環境下用的TLS Protocol與Cipher,所以將這兩個資訊放到Log內。 | |||
在<code>/etc/nginx/conf.d/combined_ssl.conf</code>內的設定如下: | |||
<pre> | |||
# | |||
log_format combined_ssl '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $ssl_protocol/$ssl_cipher'; | |||
</pre> | |||
=== SSL === | === SSL === | ||
在<code>/etc/nginx/conf.d/ssl.conf</code>內 的設定如下 : | |||
在<code>/etc/nginx/conf.d/ssl.conf</code>內: | |||
<pre> | <pre> | ||
ssl_protocols TLSv1 TLSv1.2; | ssl_protocols TLSv1 TLSv1.2; | ||
ssl_ciphers " | ssl_ciphers "CHACHA20+ECDHE:AESGCM+ECDHE:AES+ECDHE:CAMELLIA+ECDHE:!ADH:!AECDH:!DSS:!ECDSA:!MD5:!SHA1"; | ||
ssl_session_cache shared:SSL:30m; | ssl_session_cache shared:SSL:30m; | ||
ssl_session_timeout 30m; | ssl_session_timeout 30m; | ||
</pre> | </pre> | ||
這跟其他網站上建議的有些差異: | |||
; 直接關掉<code>TLSv1.1</code>: | |||
: 因為就瀏覽器安全性來說,應該使用<code>TLSv1.2</code>,就相容性來說,則是使用<code>TLSv1.0</code>,而目前沒有看到需要開<code>TLSv1.1</code>才會動情況,直接關掉反而可以避免nginx實做<code>TLSv1.1</code>有問題時的風險(因為用的人少,眼球會比較少,這個協定風險反而比另外兩個高)。 | |||
; 試著支援非NIST架構的協定: | |||
: 目前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/;
}
}
外部链接
- 官方网站 (英文)
- NGINX Stable : “Nginx” team (英文)
- NGINX Mainline : “Nginx” team (英文)