Nginx的优化

Posted 加油!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 out408)”错误,默认值是60

以上是关于Nginx的优化的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

从JVM的角度看JAVA代码--代码优化

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

将 nginx rtmp 片段发送到 WebRTC