详述Linux系统中配置Nginx网页优化(二)
更改Nginx运行进程数
- 在高并发场景,需要启动更多的
Nginx
进程以保证快速响应,以处理用户的请求,避免造成阻塞 - 可以使用
ps aux
命令查看Nginx
运行进程的个数 -
更改进程数的配置方法
- 修改配置文件,修改进程配置参数
-
修改配置文件的
worker_ processes
参数- 一般设为
CPU
的个数或者核数 - 在高并发情况下可设置为
CPU
个数或者核数的2倍
- 一般设为
- 运行进程数多-些,响应访问请求时,
Nginx
就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务速度 -
使用
ps aux
查看运行进程数的变化情况 - 默认情况,
Nginx
的多个进程可能跑在一个CPU
上, 可以分配不同的进程给不同的CPU
处理,充分利用硬件多核多CPU
- 在一台4核物理服务器,可进行以下配置,将进程进行分配
Worker_ cpu_affinity 0001 0010 0100 1000
配置实例
[root@localhost conf]# ps aux | grep nginx //查看进程数
root 5278 0.0 0.0 20548 612 ? Ss 15:17 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 5279 0.0 0.0 23076 1396 ? S 15:17 0:00 nginx: worker process
root 5295 0.0 0.0 112728 972 pts/0 S+ 15:18 0:00 grep --color=auto nginx
[root@localhost ~]# cd /proc/ //进入设备目录
[root@localhost proc]# cat cpuinfo //查看cpu信息
processor : 0
vendor_id : GenuineIntel
cpu family : 6
...//省略部分内容... //第一个cpu信息
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
...//省略部分内容...
clflush size : 64 //第二个cpu信息
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
[root@localhost proc]# vim /usr/local/nginx/conf/nginx.conf //进入编辑nginx配置文件
#user nobody;
worker_processes 2; //增加cpu个数
worker_cpu_affinity 01 10; //设置平均分配访问请求
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
...//省略部分内容...
:wq
[root@localhost proc]# systemctl restart nginx.service //重启服务
[root@localhost proc]# ps aux | grep nginx //查看进程数
root 1813 0.0 0.0 20548 616 ? Ss 15:32 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 1814 0.0 0.0 23076 1400 ? S 15:32 0:00 nginx: worker process
nginx 1815 0.0 0.0 23076 1400 ? S 15:32 0:00 nginx: worker process
//增加进程数
root 1823 0.0 0.0 112728 972 pts/0 S+ 15:32 0:00 grep --color=auto nginx
配置Nginx实现网页压缩功能
-
Nginx
的ngx_http_gzip_module
压缩模块提供对文件内容压缩的功能 - 允许
Nginx
服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装 - 可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
压缩功能参数讲解
-
gzip on
:开启gzip
压缩输出 -
gzip_min_length 1k
:用于设置允许压缩的页面最小字节数 -
gzip_buffers 4 16k
:表示申请4
个单位为16k
的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip
压缩结果 -
zip_http_version 1.0
:用于设置识别http
协议版本,默认是1.1
,目前大部分浏览器已经支持gzip
解压,但处理最慢,也比较消耗服务器CPU
资源 -
gzip_comp_level 2
:用来指定gzip
压缩比,1
压缩比最小,处理速度最快;9
压缩比最大,传输速度快,但处理速度最慢,使用默认即可 -
gzip_types text/plain
:压缩类型,是就对哪些网页文档启用压缩功能 -
gzip_vary on
:选项可以让前端的缓存服务器缓存经过gzip
压缩的页面
将以上的压缩功能参数加入到主配置文件httpd配置中段
配置实例
[root@localhost proc]# cd /usr/local/nginx/conf/ //进入配置文件目录
[root@localhost conf]# vim nginx.conf //编辑配置文件
...//省略部分内容...
#keepalive_timeout 0;
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
gzip on; //开启压缩功能
gzip_min_length 1k; //编辑压缩功能条目
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 6;
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 application/json;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
server {
listen 80;
server_name localhost;
...//省略部分内容...
:wq
[root@localhost conf]# systemctl restart nginx.service //重启服务
- 在客户机中访问网页,并使用抓包工具查看是否开启压缩功能
配置Nginx实现防盗链
- 在企业网站服务中,- -般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失
- Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理
配置实例
[root@localhost ~]# mount.cifs //192.168.100.10/lamp-c7 /mnt/ //将准备的防盗链图片目录挂载到Linux系统
Password for root@//192.168.100.10/lamp-c7:
root@localhost mnt]# cd /mnt/ //进入挂载目录
[root@localhost mnt]# ls
apr-1.6.2.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
apr-util-1.6.0.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt nginx-1.12.0.tar.gz
awstats-7.6.tar.gz error.png miao.jpg php-5.6.11.tar.bz2
[root@localhost mnt]# cp error.png /usr/local/nginx/html/ //将防盗链图片复制到nginx站点目录
[root@localhost mnt]# cd /usr/local/nginx/html/ //进入站点目录
[root@localhost html]# ls //查看
50x.html error.png index.html miao.jpg //图片成功复制
[root@localhost html]# yum install bind -y //安装DNS功能
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
...//省略部分内容...
已安装:
bind.x86_64 32:9.11.4-9.P2.el7
作为依赖被安装:
bind-export-libs.x86_64 32:9.11.4-9.P2.el7
作为依赖被升级:
bind-libs.x86_64 32:9.11.4-9.P2.el7 bind-libs-lite.x86_64 32:9.11.4-9.P2.el7
bind-license.noarch 32:9.11.4-9.P2.el7 bind-utils.x86_64 32:9.11.4-9.P2.el7
dhclient.x86_64 12:4.2.5-77.el7.centos dhcp-common.x86_64 12:4.2.5-77.el7.centos
dhcp-libs.x86_64 12:4.2.5-77.el7.centos
完毕!
[root@localhost html]# vim /etc/named.conf //编辑DNS主配置文件
...//省略部分内容...
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
...//省略部分内容...
:wq
[root@localhost html]# vim /etc/named.rfc1912.zones //编辑DNS区域配置文件
...//省略部分内容...
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
...//省略部分内容...
:wq
[root@localhost named]# cp -p named.localhost kgc.com.zone //复制DNS区域数据文件,并更改文件名
[root@localhost named]# vim kgc.com.zone //编辑DNS区域数据配置文件
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.144.133 //设置解析地址
:wq
[root@localhost named]# systemctl start named //启动DNS服务
- 打开一台win10 客户机与一台win 7客户,在win 7客户机中安装web服务,建立盗链网站,并在客户机中测试访问网站
[root@localhost html]# cd ../conf/ //进入nginx配置文件目录
[root@localhost conf]# vim nginx.conf //编辑配置文件
...//省略部分内容...
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~*\.(jpg|gif|swf)$ { //在server模块下添加防盗链条目
valid_referers none blocked *.kgc.com kgc.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.kgc.com/error.png;
}
}
...//省略部分内容...
:wq
[root@localhost conf]# systemctl restart nginx.service
- 在win 10客户机中测试防盗链功能是否开启