LInux系统架构—-Nginx的深入优化
一.更改进程数
- 在高并发的坏境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻塞,使用ps aux查看Nginx运行的进程个数
[root@server2 ~]# ps aux | grep nginxroot 253140.00.0 1191602180 ?Ss 3月14 0:00 nginx: master process /usr/sbin/nginxnginx253150.00.2 1518527996 ?S3月14 0:00 nginx: worker processnginx253160.00.2 1518527996 ?S3月14 0:00 nginx: worker processnginx253170.00.2 1518527996 ?S3月14 0:00 nginx: worker processnginx253180.00.2 1518527996 ?S3月14 0:00 nginx: worker processroot 255770.00.0123481148 pts/2S+ 00:15 0:00 grep --color=auto nginx
注:其中master process是Nginx的主进程,worker process是Nginx的子进程
- 修改Nginx的配置文件中的worker_process参数,一般设置为CPU的个数或者核数,在高并发的情况下可以设置为Cpu的个数或者核数的2倍,可以先查看CPU的核数确定参数
[root@server2 ~]# cat /proc/cpuinfo |grep -c "physical"8
- 在nginx的主配置文件,设置参数为2,与cpu的核数相同,运行进程数设置多一些,响应客户端访问请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务速度
[root@server2 ~]# vim /etc/nginx/nginx.confuser nginx;worker_processes 2;[root@server2 ~]# systemctl restart nginx.service
[root@server2 ~]# ps aux |grep nginxroot 256310.00.0 1191602176 ?Ss 00:32 0:00 nginx: master process /usr/sbin/nginxnginx256320.00.2 1518528048 ?S00:32 0:00 nginx: worker processnginx256330.00.2 1518528048 ?S00:32 0:00 nginx: worker processroot 256350.00.0123481124 pts/2S+ 00:33 0:00 grep --color=auto nginx
注:开启了一个主进程和2两个子进程,由此可见参数起到作用,当有多核cpu时,设置参数 worker_cpu_affiniity
二.网页压缩
Nginx的ngx_http_gizp_module压缩模块提供了对文件内容压缩的功能,允许Nginx服务器将输出内容发送到客户端之前进行压缩,以节省网站的带宽。
默认情况下,Nginx安装的该模块,只需要在配文件中加入相应的压缩功能
#开启压缩功能gzip on;#表示申请4个单位为16KB的内存作为压缩结果流缓存,默认值时申请与原始数据大小相同的内存空间来存储gzip压缩结果gzip_buffers 4 64k;#用于设置识别http协议版本,默认时1.1,目前大部分浏览器以及支持解压,但是处理很慢,消耗资源多gzip_http_version 1.1;用来指定压缩比,1压缩最小,处理速度块,9压缩最多,处理速度慢gzip_comp_level 2;#用于设置允许压缩的页面最小字节数gzip_min_length 1k;#该选项可以让前端的缓存服务器缓存经过gzip压缩的页面gzip_vary on;#压缩类型,对那些网页文档启动压缩功能gzip_types test/plain text/javascript application/x-javascript text/css text/html text/xml application/xml;
- 网页压缩操作
#在nginx的主页面中加入图片[root@server2 ~]# vim /usr/share/nginx/html/test.htmlnginx html page
- 设置压缩参数
##在http模块中添加gzipon;gzip_buffers 4 64k;gzip_http_version 1.1;gzip_comp_level 2;gzip_min_length 1k;gzip_vary on;gzip_types test/plain text/javascript application/x-javascript text/css text/xml image/jpg image/jpeg image/png image/gif application/xml application/xml+rss;
三.防盗链
- 在企业网站服务中一般要配置防盗链功能,以避免网站被非法盗用,造成经济损失,也避免不必要的带宽浪费
- Nginx的防盗链功能非常强大,在默认情况之下,只需要进行简单的配置,即可实现防盗链功能
- 防盗链具体操作
- 准备两台主机模拟盗链与防盗链
类别 | IP地址 | 域名 |
---|---|---|
源主机 | 10.1.1.171 | www.kgc.com |
盗链主机 | 10.1.1.172 | www.yun.com |
- 设置源主机
[root@server1 ~]# vim /etc/hosts10.1.1.171 www.kgc.com10.1.1.172 www.yun.com[root@server1 html]# ls1.jpg404.html50x.htmlindex.htmlnginx-logo.pngpoweredby.pngtest.html
查看源主机
设置盗链主机
[root@server2 ~]# vim /etc/hosts10.1.1.171 www.kgc.com10.1.1.172 www.yun.com[root@server2 html]# ls1.jpg404.html50x.htmlindex.htmlnginx-logo.pngpoweredby.pngtest.html
查看盗链结果
在源主机上设置防盗链模块
[root@server1 ~]# vim /etc/nginx/nginx.conflocation / {valid_referers none blocked www.kgc.com;//满足此条规则,不跳转if ($invalid_referer) { //如果为真rewrite ^/ http://www.kgc.com/error.png;//跳转错误页面}}
验证盗链结果
四.FPM参数优化
- 在LNMP架构中php-fpm模块处理动态请求,为了提高PHP的处理速度,可以对FPM模块进行参数的调整
- FPM进程有两种启动方式,由pm参数指定,分别是static和dynamic
- static将产生固定数据的fpm进程,可以使用pm.max_children指定的启动的进程数量
- dynamic将以动态的方式产生fpm进程,这种方式产生的参数则要根据服务器的内存与服务器负载进行调整
dynamic方式下的参数
选项 | 描述 |
---|---|
pm.max_children | 指定启动的进程的最大的数量 |
pm.start.servcie | 动态方式下初始的ftpm的进程数量 |
pm_mim_space_servers | 动态方式下最小的fpm空闲进程数 |
pm_max_space_servers | 动态方式下最大的fpm空闲进程数 |
| pm.max_children | 指定启动的进程的最大的数量 |
| pm.start.servcie | 动态方式下初始的ftpm的进程数量 |
| pm_mim_space_servers | 动态方式下最小的fpm空闲进程数 |
| pm_max_space_servers | 动态方式下最大的fpm空闲进程数 |