一.配置文件的自检功能的添加及高亮显示
- 在编译完成之后会再nginx的压缩包的响应目录下产生vim的目录,该目录下的文件就是nginx的配置文件的相关自检,但是没有在系统的家目录下,因此需要对其进行如下配置:
完成后的效果如下:
二.nginx的gzip的应用
- 在配置文件中添加gzip模块
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
添加内容如下:
33 gzip on;
压缩条件:设置允许压缩的最小字节数,即大于1k就对其进行压缩
34 gzip_min_length 1;
压缩比:为1-9,1压缩比最小处理速度最快,9压缩比最大处理最慢(传输快但是比较消耗cpu)
35 gzip_comp_level 2;
36 gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd/php image/jpeg image/gif image/png;
- 测试如下:
- (1)在默认发布页面导入较大的文件
- (2)在浏览器页面查看,发现40K的文件也被压缩
查看执行过程发现使用了gzip
三.对客户端的并发量和下载速度的限制
1.对客户端并发量的限制
nginx可以使用ngx_http_limit_req_module模块的limit_req_zone指令进行限流访问,防止用户恶意攻击刷爆服务器ngx_http_limit_req_module模块是nginix默认安装的,所以可以直接配置即可。
-
配置文件中添加限流限制
-
编辑配置文件添加相应的限制内容
配置文件编辑解析如下:
a.在http的默认模块添加,区域名称zone为one(自定义),占用空间大小为10m,平均处理请求的频率不能超过每秒一次。
b.而 b i n a r y r e m o t e a d d r 是 binary_remote_addr是 binaryremoteaddr是remote_addr(客户端IP)的二进制格式,固定占用4个字节(可能是c语言的long类型长度)。而 r e m o t e a d d r 是 按 照 字 符 串 存 储 , 占 用 7 − 15 个 字 节 , 这 样 看 来 remote_addr是按照字符串存储,占用7-15个字节,这样看来 remoteaddr是按照字符串存储,占用7−15个字节,这样看来binary_remote_addr可以节省空间
37 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; //含义就是使用http的限流模块,对于客户端的ip进行限流,并且每秒只处理一个请求
50 location /search/ { //添加http服务的资源
51 limit_req zone=one;
52 }
编辑文件保存退出查看语法错误并且重启服务。
- 验证:
- 在nginx的默认发布目录下建立所添加的资源/search/在里面放入图片
- 在浏览器上查看所添加的资源是否准确
- 在物理机上再次进行压力测试查看实验效果
[root@foundation77 kiosk]# ab -c 1 -n 10 http://172.25.254.1/search/vim.jpg //-n 请求次数 -c 并发数 表示请求1次,并发数为10
实验效果如下:
- burst,nodelay的添加
概念:
a.burst指缓冲队列的长度
b.nodelay字面的意思是不延迟,具体是说对用户发起的请求不做延迟处理,而是立即处理。比如上面所定义的rate=1r/s,即每秒处理一个请求。如果同一时刻有俩个后缀为.html的请求过来了,若设置了nodey,则会立刻处理这俩个请求。若没设置nodelay,则会严格执行rate=1r/s的配置,即只处理一个请求,直观的看就是页面的数据卡了,过了1秒后才加载出来。
c.真正对限流起作用的配置就是rate=1r/s和burst=5这俩个配置。
-
配置文件的修改如下;
-
在物理机上再次进行压力测试如下:
2.对客户端的限流限制(limit_rate模块) -
配置文件的修改
指的是对search这个资源页面进行限制
- 在物理机上进行压力测试查看实验效果
- set $limit_rate 1k;
显示nginx每秒传输一个字节到浏览器中 - 在nginx配置文件中的默认的域中添加该限流
- 测试:
在默认的域添加测试源
在浏览器查看
四.https加密
1.https简介
- HTTPS其实由俩部分组成:HTTP+SSL/TLS。也就是在HTTP上又加了一层处理加密信息的模块。服务和客户端的信息传输都会通过TSL进行加密,所以传输的数据都是加密后的数据。
2.https协议原理
- 首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返回给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密文,把数据呈现出来。
3.https加密实现
1.关闭nginx服务,重新编译,需要手动添加ssl模块
a.关掉nginx
[root@server1 conf]# /usr/local/nginx/sbin/nginx -s stop #关闭nginx
b.重新编译
[root@server1 nginx-1.15.8]# make clean #清理make已经生成的makefile以及objs目录下的nginx二进制系统文件
[root@server1 nginx-1.15.8]# yum install -y openssl-devel ##安装https模块的依赖性软件
[root@server1 ~]# yum install gd-devel-2.0.35-26.el7.x86_64.rpm #安装依赖包
[root@server1 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module --with-http_image_filter_module --with-http_ssl_module #编译
[root@server1 nginx-1.15.8]# make #安装
c.将生成的二进制文件objs目录下的nginx文件替换原来的/usr/local/nginx/sbin/nginx文件
2.在/etc/pki/tls/certs 目录下生成证书,并将锁和钥匙放在nginx的配置文件的目录下
[root@server1 ~]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/
3.测试nginx的正常访问
a.编辑配置文件
配置文件编辑内容如下:
b.开启nginx
c.添加地址解析
d.编写测试页,因为该域名下的资源在/web下面所以需要创建该目录
在物理机上添加解析:
测试访问正常:
5.再次编写配置文件添加https
a.编辑配置文件
文件编辑内容如下:
b.在浏览器页面进行测试,输入https://www.westos.org会出现自动导入证书界面
证书添加成功之后,再次直接在浏览器输入www.westos.org会直接自动跳转到https页面
五.网页重定向
1.将www.westos.org重定向到https://www.westos.org
- 编写配置文件
- 重启服务
- 测试
注意:当在配置网页的rewrite重写得后面不加$时效果如下:
a.配置文件中去掉$符号
b.在物理机上再次测试
2.永久重定向
只需在后面加permanent即可
3.将www.westos.org/bbs/index.html重定向到
https://bbs.westos.org/index.html
a.编辑配置文件
b.编写测试页
c.在物理机添加解析
d.在物理机上测试
4.将bbs.westos.org重定向到http://www.westos.org/bbs下
a.编写配置文件
b.测试页的编写
c.物理机上测试
六.图片盗链与防盗链
1.图片盗链
1.新添加一台nginx主机server2,编写配置文件
[root@server2 nginx-1.15.8]# vim /usr/local/nginx/conf/nginx.conf
文件编辑内容如下:
2.server上添加解析
3.server2上添加测试页
[root@server2 ~]# mkdir /web
[root@server2 ~]# cd /web/
[root@server2 web]# vim index.html
[root@server2 web]# cat index.html
<html>
<body>
<br>盗链图片</br>
<img src="http://www.westos.org/vim.jpg">
</body>
</html>
4.物理机上添加解析
5.在server1上的配置文件中添加www.westos.org,并且添加资源
6.在物理机上使用server2的daolian.westos.org查看
则盗链图片成功
2.防盗链
1.在server1上重新编写配置文件
2.再次重新访问网页
发现访问不到图片,则证明防盗链成功
3.如果是盗链图片给用户返回盗链警告图片
- 编辑server1的配置文件
编辑内容如下:
- 添加bbs目录下的资源
- 再次测试