优化的目录:
一、更改进程数
二、配置网页压缩
三、配置防盗链
一、更改进程数
在高并发环境中,需要启动更多的nginx进程以保证快速响应,用以处理用户的请求,避免造成阻塞。使用ps aux命令查看Nginx运行的进程的个数。
[root@localhost html]# ps aux | grep nginx
root 10825 0.0 0.0 20544 616 ? Ss 16:53 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 10826 0.0 0.0 23072 1404 ? S 16:53 0:00 nginx: worker process
root 10842 0.0 0.0 112728 968 pts/1 S+ 16:53 0:00 grep --color=auto nginx
其中master process是主进程,开启了一个,worker process是子进程,也是开启了一个
(1)修改nginx的文件中的worker_process参数,一般设为CPU的个数或核数,在高并发的情况下,可设置为CPU的个数或者核数的2倍,可以先查看CPU的核数以确定参数。
[root@localhost ~]# cat /proc/cpuinfo | grep -c "physical"
2
参数设置为2,和CPU核数相同,运行进程数设置多一些,响应客户端请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务的速度。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; #修改为核数相同或者2倍
worker_cpu_affinity 01 10; #设置每个进程由不同CPU处理
(2)修改完后,重启服务,查看运行进程数的变化。
[root@localhost ~]# service nginx restart
[root@localhost ~]# ps aux | grep nginx
root 10385 0.0 0.0 20544 612 ? Ss 16:14 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 10386 0.0 0.0 23072 1400 ? S 16:14 0:00 nginx: worker process
nginx 10387 0.0 0.0 23072 1652 ? S 16:14 0:00 nginx: worker process
root 10626 0.0 0.0 112728 964 pts/1 S+ 16:35 0:00 grep --color=auto nginx
开启了一个主进程和2个子进程,可见参数设置起了作用。
2.配置网页压缩
Nginx的ngx_http_gzip_module压缩模块提供了对文件内容压缩的功能,以节约网站的带宽,提升用户的访问体验,默认nginx已经安装该模块,只需要在配置文件加入相应的压缩功能参数对压缩性能进行优化。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
gzip on; #去掉#开启gzip压缩功能
gzip_min_length 1k; #压缩阈值
gzip_buffers 4 16k; #buffer 大小为4个16k缓冲区大小
gzip_http_version 1.1; #压缩版木
gzip_comp_level 6; #压缩比率,最小为1,处理速度快,传输速度慢,9最大压缩比,处理速度慢,传输速度快
gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript applicationion/json;
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则,表示ie6以下不启用gzip
gzip_vary on;
重启服务,以大小超过1KB的html文件作为nginx网站内容,然后访问网址抓取数据报文,显示使用gzip进行了压缩
3.配置防盗链
在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免不必要的带宽浪费。
(1)先实现盗链
需要准备两台主机模拟盗链,一台主机作为客户端访问盗链网站。
IP地址 域名 用途 系统
192.168.154.131 www.kgc.com 源主机 CentOS7
172.16.10.8 -------------- 客户机 Windows7
1)修改源主机和盗链主机的文件
2)把图片game.jpg放到源主机kgc.com的站点目录下。
[root@localhost ~]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html game.jpg index.html error.png
3)在盗链主机192.168.154.162的站点目录下编写盗链页面test.html,盗取源主机www.kgc.com的图片。
[root@localhost html]# vim test.html
<html>
<head></head>
<body>
<h1>this is test web</h1>
<img src="http://www.kgc.com/game.jpg"/>
</body>
</html>
4)访问盗链网页http://192.168.154.131 查看是否盗链成功。
盗链成功!!!
(2)配置Nginx防盗链
Nginx的防盗原理是加入location项,用正则表达式过滤图片类型文件,对于信任的网址可以正常使用,对于不信任的网址则返回相应的错误图片。在源主机kgc.com的配置文件加入以下代码:
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
location ~*\.(jpg|gif|swf)$ {
valid_referers none blocked *.kgc.com kgc.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.kgc.com/error.png;
}
}
~*.(jpg|gif|swf)$: 匹配不区分大小写,以.jpg 或.gif或 .swf结尾的文件。
valid_referers:设置信任的网站,可以正常使用图片。
none:浏览器中refer为空的情况,就是直接在浏览器访问图片。
blocked:浏览器中refer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或 https://开头。
后面的网址或域名:refer包含相关字符串的网址。
if语句:如果链接的来源域名不在valid_referers所列出的列表中, $invalid_referer 为1,则执行后面的操作,即进行重写或返回403页面。
1)把图片error.png放到源主机kgc.com的站点目录下
[root@localhost ~]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html error.png game.jpg index.html
2)这时重启服务器,重新访问,说明防盗链成功。