1.隐藏nginx软件版本号信息
![5b9eb163e8a6fd561a29fa55c56c3abd31cef043](https://yqfile.alicdn.com/5b9eb163e8a6fd561a29fa55c56c3abd31cef043.png?x-oss-process=image/resize,w_1400/format,webp)
暴露了软件版本号,恶意用户可能根据版本漏洞进行攻击,隐藏版本号可以加强Web服务的安全性。
vim /usr/local/nginx/nginx.conf
http
{
server_tokens off; ###添加这一行
......
}
作用:控制http response header内的web版本信息的显示,以及错误信息中web服务版本信息的显示。
重新加载nginx服务 /usr/local/sbin/nginx -s reload
![b1d2ed955c3b4b7cbdb64621edd5c6a8f54ddc3e](https://yqfile.alicdn.com/b1d2ed955c3b4b7cbdb64621edd5c6a8f54ddc3e.png?x-oss-process=image/resize,w_1400/format,webp)
参数性能优化:
1.进程数优化
worker_processes 1;
指定nginx服务开启时,开启的进程数。nginx有一个master进程,多个worker进程,最开始设置可以等于CPU的核数(官方建议);当高流量高并发场合时可以考虑修改为CPU核数*2。(不设置参数,默认为1)
查看CPU核数:
grep processor /proc/cpuinfo | wc -l
![74c6d48cc249f525649e87c639fad4c4b773fc7f](https://yqfile.alicdn.com/74c6d48cc249f525649e87c639fad4c4b773fc7f.png?x-oss-process=image/resize,w_1400/format,webp)
1.1 绑定不同的Nginx进程到不同的CPU上,默认情况下,nginx的多个进程可能跑在某一个CPU或CPU的某一个核上,导致nginx进程使用硬件资源不均衡。
worker_processes 1;
worker_cpu_affinity 0001 0010 0100 1000;
worker_rlimit_nofile 65535;
配置nginx进程和CPU亲和数的参数。可以把不同的进程分给不同的CPU处理。
(默认情况下,进程配置也是相对平均的)
2.事件处理优化
linux下nginx使用epoll的I/O多路复用模型,配置在event下
![66835bb1d01999bb9c0099e5d236c56a361b2254](https://yqfile.alicdn.com/66835bb1d01999bb9c0099e5d236c56a361b2254.png?x-oss-process=image/resize,w_1400/format,webp)
worker_connections,nginx单个进程允许的客户端最大连接数。默认1024,根据具体的服务器性能和程序内存使用量设定。
worker_rlimit_nofile 进程最大打开文件数,无此默认配置。
3.域名散列表配置
![49cd442658e70c1ee8bbc7ea036090121e535e3c](https://yqfile.alicdn.com/49cd442658e70c1ee8bbc7ea036090121e535e3c.png?x-oss-process=image/resize,w_1400/format,webp)
尽可能使用确切域名(如nginx.org 和www.nginx.org),降低通配查找时间。每个端口最多关联3个表。
3.高效文件传输模式
![1b12e734a7192a9a340bead13ab16292cdb42903](https://yqfile.alicdn.com/1b12e734a7192a9a340bead13ab16292cdb42903.png?x-oss-process=image/resize,w_1400/format,webp)
sendfile on;
默认开启该参数,sendfile作用于两个函数之间的文件拷贝,工作在内核上比read和write高效很多,因为read和write是应用层操作。
tcp_nopush on;
这个选项只在sendfile开启时生效,作用:减少网络报文段的数量。(默认不开启)
4.连接超时优化
连接超时作用:
1.将无用连接设置为尽快超时,可以保护服务器系统资源(CPU,内存,磁盘)。
2.当连接很多时,及时断掉已经建立好但又长时间不进行操作的连接。
PHP程序相对于Java程序连接消耗资源和时间较少。
![7bb7a765a72d06efdd6f01402437aace7276bc9f](https://yqfile.alicdn.com/7bb7a765a72d06efdd6f01402437aace7276bc9f.png?x-oss-process=image/resize,w_1400/format,webp)
keepalive_timeout 65;
超时连接设置,超过此时间,服务器会关闭该连接。
tcp_nodelay on;
访问量过大情况下开启后可防止网络及I/O阻塞,提升nginx工作效率。参数作用:默认情况下当数据发送时,内核不会马上发送,会等待更多字节组成一个数据包,这样可以提高I/O性能。但是不适用于每次只发送很少字节的业务场景。
client_header_timeout 15;
设置读取客户端请求头数据的超时时间。15为经验值参考。超时用户还没有发送完整的header数据,服务器返回408错误,防止客户端利用http协议进行攻击。
client_body_timeout 60;
客户端请求主体的超时时间,默认值60
send_timeout 25;
指定响应客户端的超时时间,这个超时时间仅限于两个超时活动之间,超时时间内客户端没有接受任何数据,连接将被关闭。
最后,参数的调整要根据业务量业务类型业务需求以及自身的服务器性能综合评定修改