安全优化
- 调整版本号
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
配置文件参数
- nginx 进程对应配置
# nginx.conf
worker_processes 1 ; --> 指定nginx要开启的进程数
# 参数调整的worker进程数量,nginx有master和worker进程,实际处理请求是为woker进程, master为管理进程。
# 查看cpu个数
grep -c processor /proc/cpuinfo
# 修改nginx.conf 与实际cpu颗数对应
sed -i "/worker_processes/s/1/x/g" nginx.conf
- 优化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个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。
- nginx单个进程运行客户端最大连接数
#nginx.conf
events {
worker_connections 1024;
}
参数包含代理服务器连接,客户端连接等。实际并发连接还受worker_rlimit_nofile 影响
nginx 总并发连接数 = nginx_worker数量 * worker_connections
- nginx worker 最大文件打开数
worker_rlimit_nofile 65535;
# 最大文件打开数,可设置为系统优化后的 ulimit -n 结果
网友评论