實戰 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 回調函示,不必一直輪詢,因此效能較高