實戰 Nginx 設定技巧:連線數與效能
這裡針對實際運行服務,記錄一些設定技巧
首先,從 Nginx 的設定檔 /etc/nginx/nginx.conf
nginx.conf 通常為了可將多站點的設定檔獨立分存,一般都會有以下設定,指定將某個資料夾的設定檔 include 到 nginx.conf 裡。
另外,為了避免暴露 Nignx 版本,增加弱點攻擊機會,可以將 server_tokens 關閉,隱藏主機版本。
CVT2HUGO: 開始
http {
...
include /etc/nginx/sites/*;
#隱藏主機的版本
server_tokens off;
}
設定 Nginx 同時最大連線數
這裡說明透過 Worker 以及每個 Worker 最大連線數量,來設定Nginx最大連線數
依照CPU數量設定 Worker
透過 worker_process 可以設定 workder 執行緒的數量,數量通常會跟 CPU 核心數量一致,也可以設定為 auto
# 4核心CPU
worker_process 4;
設定Worker同時連線數量
透過 worker_connections
CVT2HUGO: 可以設定 worker 可同時連線的最大數量。
events {
#可同時處理 1024 個 process
worker_connections 1024;
}
透過 Worker 數量配置,以及同時連線數量配置,
就能得到這台 Nginx Server 同時可負載的連線數量上線
worker_process * worker_connections
快取及提升效能設定
當 Nginx 處理的是大量的靜態檔案,就能夠設定快取功能,加速服務處理速度:
http {
# 針對開啟的網頁進行快取
open_file_cache max=1000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 3;
open_file_cache_errors on;
}
透過 events 設定 epoll 及同時接受多 process
events {
# epoll使用了異步,非阻塞及IO多路復用
use epoll;
# 同時接受多 process
multi_accept on;
}
安全設定
隱藏一些系統檔案及 log 檔案
server {
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
}
一些問題
1.正向代理與反向代理,區別是什麼?
正向代理就是,客戶端直接服務端
反向代理是,客戶端訪問 Nginx,Nginx再將連線轉向到後端服務
2.epoll機制說明
epoll 可同時監視多連線,適用於同時處理TCP, UDP 的 I/O 復用情況
epoll 要求線程安全,並且基於事件驅動,透過註冊事件及 callback 回調函示,不必一直輪詢,因此效能較高