Nginx优化篇

一、基本安全优化
1.隐藏版本信息
  软件漏洞与版本相关,隐藏或者消除web服务队访问用户显示各种敏感信息

解决办法·:在nginx.conf配置文件http{ 添加: server_tokens off;
修改源代码,重新编译:

1 /home/oldboy/tools/nginx-1.6.3/src/core/nginx.h 第14162 #define NGINX_VERSION  "1.6.2" 修改为想要的版本号如2.4.3
3 #define NGINX_VER "nginx/" NGINX_VERSION 将nginx修改为想要修改的软件名称,如Apache。
------------------------
1 /home/oldboy/tools/nginx-1.6.3/src/http/ngx_http_header_filter_module.c第492 grep 'Server:nginx' ngx_http_header_filter_module.cstatic
3 sed -i 's#Server:nginx#Server:Apache#g' ngx_http_header_filter_module.c
-------------------------
/home/oldboy/tools/nginx-1.6.3/src/http/ngx_http_special_response.c第21,30"<hr><center>"NGINX_VER "(http://oldboy.blog.51cto.com)</center>" CRLF
"<hr><center>OWS</center>" CRLF
2…更改nginx服务的默认用户
1.直接修改nginx.conf.default参数
2.在编译安装时指定用户
3.降权启动nginx
二、参数优化nginx服务性能
1.优化nginx进程个数策略
worker_processes  1;一般调整到与CPU的颗数相同
--查看linux可查看cup个数及总核数
grep processor /proc/cpuinfo|wc -l
	--查看cpu总颗数
grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
	--通过top,然后数字1,显示所有cpu数 top  按1键就会显示第一个的信息
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0
2.优化绑定不同ningx进程到不同的cpu上

解释:在默认情况下nginx的进程泡在一个cpu或cpu的某一个核上
解决:优化不同的nginx进程给不同的cpu处理,充分有效利用有效的硬件资源
–四核cpu配置

worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;
	--双核配置
worker_processes    2;
worker_cpu_affinity 0101 1010;
	--taskset  -c  用来分配服务给cpu
3.nginx事件处理模型优化
--解释:nginx链接处理机制在于不同操作系统会采用不同的I/O模型
events {
worker_connections  1024;
use epoll;
}
4.调整nginx单个进程允许的客户最大连接数

参数语法:worker_connections number
默认配置:worker_connections 512
放置位置:events 标签

events {
    worker_connections  1024;    #一个worker进程的并发
}
总并发= worker_processes* worker_connections
5.配置nginx worker进程最大打开文件数
参数语法:worker_rlimit_nofile number 

放置位置:主标签段
说明:作用是改变worker processes能打开的最大文件数

worker_rlimit_nofile 65535;
各参数受系统文件的最大打开数限制
cat /proc/sys/fs/file-max 
    8192
  文件系统最大可打开文件数
    ulimit -n
    1024
6.开启高效文件传输模式

设置参数 sendfile on;
sendfile参数用于开启文件的高效传输模式。同时将tcp_nopush和tcp_nodelay两个指令设置为on,可防止网络及磁盘i/o阻塞,提升nginx工作效率
http {
  sendfile on; #放在http,server,location都可以
}
例:

    sendfile   on;
    tcp_nopush on;
    tcp_nodelay on;
    server_tokens off;
    server_names_hash_bucket_size 128;
    server_names_hash_max_size 512;
    keepalive_timeout  65;
    client_header_timeout 15s;
    client_body_timeout 15s;
    send_timeout 60s;
7.fastcgi相关参数调优

配合nginx向后请求php动态引擎

fastcgi_connect_timeout 240;       
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#fastcgi_temp_path /data/ngx_fcgi_tmp;
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
8.nginx的gzip性能优化

nginx gzip压缩模块提供了压缩文件内容的功能,用户请求的内容在发送给客户端之前,nginx服务器会根据一些具体的策略实施压缩,以节省网站出口带宽,同时加快了数据传输效率,提升了用户的访问体验。

		优点
			提升网站用户体验:由于发给用户的内容小了,所以用户访问单位大小的页面就快了,用户体验就提升了
		缺点
			  节约网站带宽成本:由于数据时压缩传输的,因此,会消耗一些cpu资源
		压缩对象
			纯文本内容压缩比很高,因此,纯文本的内容最好要压缩

被压缩的纯文本文件必须要大于1KB,由于压缩算法的特殊原因,极小的文件压缩反而变大
  图片、视频(流媒体)等文件尽量不要压缩,因为这些文件大多都是经过压缩的,如果再压缩很可能不会减小或减小很少,或者有可能增大,而在压缩时还会消耗大量的CPU、内存资源
参数配置

gzip on;                            #表示开启压缩功能
gzip_min_length  1k;                  #表示允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩,建议设置成大于1K。如果小于1K可能会越压越大
gzip_buffers     4 32k;                 #压缩缓存区大小
gzip_http_version 1.1;                #压缩版本
gzip_comp_level 9;                  #压缩比率
gzip_types  text/css text/xml application/javascript;  #指定压缩的类型
gzip_vary on;                   #vary header支持
9.nginx的expires

为用户访问网站的内容设定一个过期时间,当用户第一次访问到这些内容时,会把这些内容存储在用户浏览器本地,这样用户第二次及之后继续访问该网站,浏览器就会检查已经缓存在用户浏览器本地的内容,就不会去浏览器下载了,直到缓存的内容过期或者被清除为止。
–expires可以降低网站的带宽,节约成本
–加快用户访问网站的速度,提升了用户访问体验
–服务器访问量降低,服务器压力就减轻了,服务器的成本也会降低,甚至可以节约人力成本
–几乎对于所有web服务来说,这是非常重要的功能之一,apache服务也有此功能
参数配置:

Add expires header according to URI(path or dir).
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
    expires 360d;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值