Nginx的优化
一、Nginx配置文件基本参数优化
1.隐藏Nginx header内版本号信息
一些特定的系统及服务漏洞一般都是特定的软件及版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信息),这样黑客无法猜到有漏洞的服务是否是对应服务的版本,从而确保web服务器最大的安全。
·利用curl查看隐藏前herder内的web版本号信息
[root@bogon ~]# curl -I 192.168.157.147 HTTP/1.1 200 OK Server: nginx/1.6.2#版本软件名称 Date: Wed, 11 Dec 2019 02:26:54 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Thu, 28 Nov 2019 03:43:16 GMT Connection: keep-alive ETag: "5ddf4254-264" Accept-Ranges: bytes
·修改过程
vi /application/nginx/conf/nginx.conf
http {
server_tokens off;
·修改结果
HTTP/1.1 200 OK Server: nginx
2.配置Nginx worker进程个数
在高并发场景,我们需要事先启动更多的Nginx进程以保证快速相应并处理用户的请求。具体配置参数如下:
worker_processes 8;#指定了Nginx要开启的进程数。建议指定和CPU的数量相等或者乘2的进程数。
3.根据CPU核数进行Nginx进程优化
默认情况Nginx的多个进程可能更多的跑在一颗CPU上,本节是分配不同的进程给不同的CPU处理,达到充分利用硬件多核多。
4.调整单个进程允许的客户端最大连接数。
这个值根据具体服务器性能和程序的内存使用量来指定(一个进程启动使用的内存根据程序确定)
worker_connections 28480
5.配置每个进程最大文件打开数
每个进程打开的最大文件数,可设置为系统优化后的ulimit -HSn的结果。
worker_rlimit_nofile 65535
6.上传文件大小限制
client_max_body_size 10m;
7.fastcgi调优(配合PHP引擎动态服务)
fastcgi_connect_timeout 300;#指定连接到后端FastCGI的超时时间 fastcgi_send_timeout 300;#向FastCGI传送请求的超时时间,这个值是指定已经完成两次握手之后向FastCGI传送请求的超时时间。 fastcgi_read_timeout 300;#指定接受FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。 fastcgi_buffer_size 64k;#指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分,可以设置为fastcgi_buffers选项指定的缓冲区大小。 fastcgi_buffers 4 64k;#指定本地需要多少和多大的缓冲区FastCGI的应答请求。
fastcgi_busy_buffers_size 128k;#繁忙的时候的缓冲区大小
fastcgi_temp_file_write_size 128k;#临时文件的缓冲区
fastcgi_cache oldboy_nginx#表示开启FastCGI缓存并为其指定一个名称,开启缓存非常有用,可以有效降低CPU负载。
fastcgi_cache_valid 200 302 1h;#用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时
fastcgi_cache_valid 301 1d;#将301应答缓存一天
fastcgi_cache_valid any 1m;#将其他应答啊缓存为1分钟
8.设置连接超时时间
keepalive_timeout 60;#设置客户端连接保持会话的超时时间,超过这个时间,服务器会关闭该连接。 tcp_nodelay on;#打开这个参数。在包含keepalive参数才有效 client_header_timeout 15#设置客户端请求头读取超时时间。如超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out (408)”错误 client_body_timeout 15;#设置客户端请求主题读取超时时间,如超过这个时间,客户端还没有任何发送数据,Nginx将返回“Request time out(408)”错误,默认值是60