安全優(yōu)化
- 調(diào)整版本號
nginx.conf
...
http{
...
server_tokenks off ;
...
}
...
在http塊下加入 server_tokenks off

image.png
- 修改源碼隱藏版本號
sed -n '13,17p' src/core/nginx.h
----------------------------------------------------------
#define NGINX_VERSION "1.156" # 修改為想修改的版本號
#define NGINX_VER "nginx/" NGINX_VERSION #nginx修改為想修改的軟件名稱 改成apache
#ifdef NGX_BUILD "NGINX" #nginx修改為想修改的軟件名稱 改成apache
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")" "NGINX" #nginx修改為想修改的軟件名稱 改成apache
sed -i -e 's/1.12.0//g' -e 's/nginx\//JWS/g' -e 's/"NGINX"/"JWS"/g' src/core/nginx.h
- 更改nginx啟動用戶
useradd nginx -s /sbin/nologin -M
# nginx.conf
user nginx nginx ;
或者編譯時 ./configure --user=nginx --group=nginx
配置文件參數(shù)
- nginx 進程對應配置
# nginx.conf
worker_processes 1 ; --> 指定nginx要開啟的進程數(shù)
# 參數(shù)調(diào)整的worker進程數(shù)量,nginx有master和worker進程,實際處理請求是為woker進程, master為管理進程。
# 查看cpu個數(shù)
grep -c processor /proc/cpuinfo
# 修改nginx.conf 與實際cpu顆數(shù)對應
sed -i "/worker_processes/s/1/x/g" nginx.conf
- 優(yōu)化cpu親和力
默認情況nginx可能一個cpu跑多個nginx進程,導致資源分配不均衡
# nginx.conf
worker_processes 4 ;
worker_cpu_affinity 0001 0010 0100 1000; 配置nginx進程與cpu親和力,把不同nginx進程分配到不同CPU。0001 為掩碼 代表 1,2,3,4顆cpu
# 兩顆
worker_processes 2;
worker_cpu_affinity 0101 1010;
比如8核配置
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;
worker_processes最多開啟8個,8個以上性能提升不會再提升了,而且穩(wěn)定性變得更低,所以8個進程夠用了。
- nginx單個進程運行客戶端最大連接數(shù)
#nginx.conf
events {
worker_connections 1024;
}
參數(shù)包含代理服務器連接,客戶端連接等。實際并發(fā)連接還受worker_rlimit_nofile 影響
nginx 總并發(fā)連接數(shù) = nginx_worker數(shù)量 * worker_connections
- nginx worker 最大文件打開數(shù)
worker_rlimit_nofile 65535;
# 最大文件打開數(shù),可設置為系統(tǒng)優(yōu)化后的 ulimit -n 結果