Nginx服务优化——性能与安全

1.隐藏Nginx的版本

一般来说,软件的漏洞都和版本有关的。为了减少被人针对某一版本的恶意攻击,我们可以把我们的Nginx版本隐藏起来,提高被攻击的门槛。在隐藏版本号之前,我们可以通过curl获取到软件版本。

隐藏Nginx的版本号可以通过修改nginx.conf配置文件,在http段标签内添加 "server_tokens off"的参数

修改之后检查语法问题,没有的话重载配置文件

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

再次用curl来检查,可以看到已经把nginx的版本信息给隐藏了。

如果要做到像下图百度那样修改服务器的名称,需要Nginx的源码文件然后编译安装的,这里就不做介绍,请自行百度。

2.优化Nginx服务的worker进程的个数

在高并发,高访问量的web服务场景,需要事先启动好更多的Nginx进程,以保证快速响应并处理大量并发用户的请求。Nginx有Master进程和worker进程之分,Master为管理进程,真正负责响应处理请求的是worker进程。在搭建Nginx服务时,如果我们不知道如何调整,我们可以把worker数目调整为CPU数目一致;在高并发的场合下,可能worker的数目为CPU的两倍。worker的数目调整很简单,在nginx.conf的配置文件下,直接修改即可。下面我们来验证下究竟多少的worker才合适。

(1)cpu核心数目为2(单核双线程),worker数目为1的性能情况

在并发量为1000和并发为5000测试到的性能结果(本打算测试并发10000的情况,结果测试的客户机承受不了,挂了)

可以看出,在并发为1000的时候,处理页面的速度更快,差不多是3倍的差距。在并发5000的时候,已经出现了失败的情况,也就是说服务器的性能处理不过来了,下面我们修改worker数目之后对比下。

(2)cpu核心数目为2(单核双线程),worker数目为2的性能情况

在并发量为1000和并发为5000测试到的性能结果

从测试的结果中可以看出,修改了worker数目之后。Nginx的处理速度下降了,但是在高并发的情况下缺不出现失败的情况,也就是说处理并发的能力提高了。至于怎么调整,还是需要根据实际情况来调整。

3.绑定不同的Nginx进程到不同的CPU上

    在nginx.conf配置文件里面添加一行来给不同的进程分配CPU

  1 worker_processes  2;
  2 worker_cpu_affinity 01 10;        #01、10为掩码,意思是使用第一个CPU和第二个CPU

然后测试,结果如下。对比发现没有任何的性能提升,应该是Nginx程序本身已经做了优化,自己分配好CPU的调度。在测试的时候发现,CPU的使用率两个都比较平均的。

4.开启高效文件传输模式

sendfile参数用于开启文件的高效传输模式。同时吧tcp_nopush和tcp_nodelay两个参数设置为on,可以防止网络及磁盘I/O阻塞,提升Nginx工作效率。

sendfile        on;
tcp_nopush	on;
tcp_nodelay	on;

开启之后发现性能也是没有什么提升,查看nginx.conf.default发现这是默认开启的了。

5.优化Nginx连接参数,调整连接超时时间

在Nginx建立了连接之后,当服务器建立的连接没有接收处理的请求时,可以在指定的时间内就让它超时自动退出。还有当Nginx和FastCGI服务建立连接请求PHP是,如果因为一些原因(负载高,停止响应),FastCGI服务无法给Nginx返回数据,此时可以通过配置Nginx服务参数使其不会死等,因为前面用户还在等待它返回的数据。例如,可以设置如果请求FastCGI 10秒内不能返回数据,那么Nginx就中断本次请求,向用户汇报取不到数据的错误。

实际上,这些参数用默认的即可,下面是一些参考的配置。

keepalive_timeout 60;        #设置客户端连接会话保持时间为60秒,超过这个时间,服务器会关闭该连接
client_header_timeout 15;    #设置读取客户请求头数据的超时时间,超过这个时间,客户端没有返回完整的header数据,服务器将返回"request time out" 
client_body_timeout 15;      #设置读取客户端请求主题的超时时间
send_timeout 25;             #指定响应客户端的超时时间,如果超过这个时间客户端没有活动,Nginx会关闭连接。

6.上传文件大小的限制(以wordpress为例)

之前我们在Nginx服务器上搭建了wordpress程序,wordpress程序上传文件的大小限制是2M。在今时今日来说,这个限制太小了,我们把它修改为8M看看。

用vim打开/usr/local/php/lib/php.ini文件,然后把upload_max_filesize的值改为8M,重启php-fpm服务。

然后我们看到wordpress的多媒体上传页面已经显示为8M,上传一个大小为3M的图片,测试

出现了以下的错误,实际上上传的文件还是过大了。这个过大是Nginx服务认为过大了,Nginx的文件大小限制也是需要设置下的。

用vim打开nginx.conf,在http区块添加一行,然后重新加载nginx配置文件。然后上传成功。

client_max_body_size 8m;

7.设置Nginx expires缓存

Nginx的expires的功能就是为用户访问的网站内容设定一个过期的时间,当用户第一次访问这些内容时,会把这些内容存储到浏览器本地,这样用户第二次及以后继续访问该网站时,浏览器会检查加载已经缓存到浏览器本地的内容,就不会去服务器下载了,知道缓存的内容过期或被清除为止。

expires可以减低网站的带宽,节约成本;加快用户的访问网站的速度,提升用户访问体验。但是如果网站更新内容比较频繁的话,就需要另外注意当用户更新的时候,用户看到的是不是缓存下来旧的内容。所以,这个expires的时间,我们要根据实际情况去更改,下面我们设置wordpress的css和图片内容缓存的时间为7天。在虚拟主机blog.conf的配置文件里面添加几行:

	location ~ .*\.(gif|jpeg|jpg|bmp|png|swf)$ {
		expires 7d;
		root html/blog;
	}
	location ~ .*\.(js|css)?$ {
		expires 7d;
	}

检查语法没有问题之后,重载配置文件,然后用curl来检查,看到了expires的时间为7天。

原文地址:http://blog.51cto.com/superpcm/2094252

时间: 2024-10-19 16:46:00

Nginx服务优化——性能与安全的相关文章

nginx服务优化大全

第18章 nginx服务优化 18.1 复习以前的nginx知识 18.1.1 复习nginx编译安装的3部曲 ./configure????????配置(开启/关闭功能),指定安装目录 make????????????软件编译,将源代码编译成二进制文件 make install????????将一些目录进行复制,修改,文件进行修改,查看的操作 18.1.2 编译安装常用的nginx命令 nginx -t????????????????????????????语法检查 nginx -s relo

Nginx服务优化之隐藏版本号、修改用户与组、配置页面缓存与时间、日志分割以及设置连接超时

Nginx服务优化之隐藏版本号.修改用户与组.配置页面缓存与时间.日志分割以及设置连接超时 前言 ? 在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数配置,以达到最优的用户体验. ? 默认的nginx安装参数只能提供最基本的服务,还需要调整如网页缓存时间.连接超时.网页压缩等相应参数,才能发挥出服务器的最大作用. 一.隐藏版本号 ? 我们为什么要隐藏版本号? ? 我们一定要有一个意识:对于软件或者说服务,其安全性必然不可能是无懈可击的,总会或多或少地存在各种bug或者

企业级Web Nginx 服务优化(1)

企业级Web Nginx 服务优化 总结配置文件: nginx.conf httpd.conf httpd-vhosts httpd-mpm.conf my.cnf php.ini php-fpm.conf 1.1nginx.conf 配置文件基本参数优化 1.1.1 隐藏nginx header 内版本号信息 一些特定的系统及服务漏洞一般都和热定的软件及版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信息),这样黑客无法猜到有漏洞的服务是否是对应服务的版本,从而确保web服务器最大

企业级Web Nginx 服务优化

企业级Web Nginx 服务优化 http://blog.51cto.com/search/result?q=%E4%BC%81%E4%B8%9A%E7%BA%A7Web+Nginx+%E6%9C%8D%E5%8A%A1%E4%BC%98%E5%8C%96%285%29 企业级nginx服务优化合集 企业级nginx服务优化(一) 企业级nginx服务优化(二 ) 企业级Web Nginx 服务优化(1) 企业级Web Nginx 服务优化(2) 企业级Web Nginx 服务优化(3) 企业

Nginx服务优化及优化深入

在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行参数配置,以达到最优的用户体验.默认的Nginx安装参数只能提供最基本的服务,还需要调整如网页缓存时间.连接超时.网页压缩等相应参数,才能发挥出服务器的最大作用. Ngnix服务的安装详细介绍请参考 部署Nginx网站服务实现访问状态统计以及访问控制功能 Nginx服务优化 可以从隐藏版本号.更改用户与组.配置网页缓存时间.日志切割.设置连接超时这几个方面进行优化. 1.隐藏版本号 在生产环境中需要隐藏Nginx的版本号,以避免

Nginx服务优化

1.1Nginx.conf配置文件基本参数优化 1.1.1  隐藏nginx header内版本号信息 一些特定的系统及服务漏洞一般都和特定的软件及版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信息)这样黑客无法猜到有漏洞的服务是否是对应服务的版本,从而确保web服务器最大的安全. 彻底修改nginx错误返回页面,在编译安装之前修改nginx.h文件 sed -n '13,17p' src/core/nginx.h #define NGINX_VERSION      "1.6.3

Nginx服务优化(七)网页压缩与防盗链

配置Nginx实现网页压缩功能 Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能,允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装.可在配置文件中加入相应的压缩功能参数对压缩性能进行优化. 压缩功能参数讲解 gzip on:开启gzip压缩输出 gzip_min_length 1k:用于设置允许压缩的页面最小字节数 gzip_buffers 4 16k:表示申请4个单位为16k的内存作为压缩结果流缓存,默

Nginx服务优化(三)配置网页缓存时间

配置Nginx网页缓存时间 当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度.一般针对静态网页设置,对动态网页不设置缓存时间.可在Windows客户端中使用fiddler查看网页缓存时间. 设置方法 可修改配置文件,在http段.或者server段. 或者location段加入对特定内容的过期参数 1.将图片复制到站点目录 [[email protected] nginx-1.12.2]# cd /mnt/tools/

企业级Web Nginx 服务优化(2)

2.worker_cpu_affinity参数官方说明: 查看cpu的核数的情况:[[email protected] conf]# grep "physical" /proc/cpuinfophysical id : 0address sizes : 42 bits physical, 48 bits virtual top命令很好记得总结 输入top 按 1 来进行查看. 3.压力测试配置结果: a.配置前压力测试结果: 通过观察,我们发现配置前不同CPU使用率相对平均. b.配置