Nginx WEB模块

一.随机主页
微更新 random_index_module
1.目的:将主页设置成随机页面,是一种微调更新机制
2.启动随机主页

创建主页目录   mkdir /app
 创建多个主页   touch /app/{blue.html,green.html,red.html,.yellow.html}
在不同的页面书写不同的内容,例如
<html>
<head>
<title>green color</title>
</head>
<body style="background-color:green">
<h1>green color!</h1>
</body>
</html>
启动随机主页
vim /etc/nginx/conf.d/default.conf
server{

location / {
     #root   /usr/share/nginx/html;
     #index  index.html index.htm;
     root /app;
     random_index on;
}
}
systemctl restart nginx
刷新主页,观察变化.注意隐藏文件并不会被随机选取

在这里插入图片描述二.替换模块sub_module
1.目的:网页内容替换 —— 如果我们用模板生成网站的时候,因为疏漏或者别的原因造成代码不如意,但是此时因为文件数量巨大,不方便全部重新生成,那么这个时候我们就可以用此模块来暂时实现纠错。另一方面,我们也可以利用这个实现服务器端文字过滤的效果。
2.启动替换1

vim /etc/nginx/conf.d/default.conf  启动nginx默认页面
在server{下面插入
sub_filter nginx 'QianFeng';
sub_filter_once on;
location / {
root   /usr/share/nginx/html;
index  index.html index.htm;
}
替换模块  将nginx  替换成 QianFeng
单次替换 开启,重启服务,测试页面  
将单次替换关闭,再次刷新页面,即可看见全文替换
sub_filter_once off

在这里插入图片描述三.文件读取

文件读取
模块
统称
ngx_http_core_module
语法
Syntax: 	sendfile on | off;
Default: 	sendfile on;
Context: http, server, location, if in location
Syntax: 	tcp_nopush on | off;
Default: 	tcp_nopush off;
Context: http, server, location
Syntax: 	tcp_nodelay on | off;
Default: 	tcp_nodelay on;
Context: http, server, location
原理介绍
sendfile
未使用sendfile() 的传统网络传输过程:
硬盘 >> kernel buffer >> user buffer>> kernel socket buffer >>协议栈
使用 sendfile() 来进行网络传输的过程:
硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈
sendfile() 不但能减少切换次数而且还能减少拷贝次数。
tcp_nopush
未使用tcp_nopush()网络资源浪费
应用程序每产生一次操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据以及40个字节长的包头,于是产生4000%的过载,很轻易地就能令网络发生拥塞。同时也浪费资源
使用tcp_nopush()网络传输效率提升
当包累计到一定大小后再发送。
tcp_nodelay
开启或关闭nginx使用TCP_NODELAY选项的功能。 这个选项仅在将连接转变为长连接的时候才被启用。
TCP_NODELAY是禁用Nagle算法,即数据包立即发送出去。
由于Nagle和DelayedACK的原因,数据包的确认信息需要积攒到两个时才发送,长连接情况下,奇数包会造成延时40ms,所以tcp_nodelay会将ack立刻发出去。 如果不在长连接时,可以关闭此模块,因为ack会被立刻发出去。
	启用模块
		location /video/ {
    sendfile        on;
    tcp_nopush  on;
}
		默认启动,无需验证

四.文件压缩
1.原理介绍
启动该模块,使文件传输前进行压缩,提升传输效率。
2.模块

ngx_http_gzip_module
语法
Syntax: 	gzip on | off;
Default: 	gzip off;
Context: http, server, location, if in location

Syntax: 	gzip_comp_level level;
Default: 	gzip_comp_level 1;(1~9)
Context: http, server, location

Syntax: 	gzip_http_version 1.0 | 1.1;
Default: 	gzip_http_version 1.1;
Context: http, server, location

3.启用模块
观察未压缩传输
cd /usr/share/nginx/html 主目录
rz 上传
在这里插入图片描述拷贝tar包至网站主目录
tar cvf etc.html /etc 压缩包的后缀使用.html

拷贝文本至文件主目录
启用压缩功能

http {在http标签中启动该功能
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; 
gzip_static on;     gzip_static on;# nginx对于静态文件的处理模块
systemctl restart nginx   重启

观察压缩传输 注意缓存 ,压缩包和图片类对象本身已经自带压缩功能。所以压缩比例较小低。文本类对象在压缩试验中,压缩比例体现优越。
五.页面缓存
1.模块
ngx_http_headers_module
expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中或者server段中或者location段中加入。Nginx(expires 缓存减轻服务端压力)。
2.语法
语法
Syntax: expires [modified] time;
expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location
epoch:指定“Expires”的值为 1 January,1970,00:00:01 GMT
max:指定“Expires”的值为10年。
-1:指定“Expires”的值为当前服务器时间-1s,即永远过期。
off:不修改“Expires”和"Cache-Control"的值
3.原理介绍
无缓存,每次访问服务器,均是全文传输。
开启缓存可以加速浏览网站。
4.启用缓存
观察浏览器缓存
开启浏览器缓存,浏览页面。(默认)
第一次返回状态码200.页面对象全文传输
第二次返回状态304.页面对象部分传输。
禁用缓存。浏览页面
返回码200.全文传输
理解浏览器缓存作用。
解析缓存原理
在这里插入图片描述
理解nginx服务器缓存
开启服务器缓存模块

vim /etc/nginx/nginx.conf
    location / {
        root   /usr/share/nginx/html
        index  index.html index.htm;
        expires 24h;
    }

再次浏览页面,观察响应头中出现服务器回复的缓存时间
在这里插入图片描述理解nginx服务器启动缓存时间,加速浏览。
缺点是时效性降低。
5.防盗链
模块
ngx_http_referer_module
语法
Syntax: valid_referers none | blocked | server_names | string …;
Default: —
Context: server, location

日志原理介绍
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                         '$status $body_bytes_sent "$http_referer" '
                         '"$http_user_agent" "$http_x_forwarded_for"';

日志格式中的http_referer是记录,访问点引用的URL。也就是超链接的上一级地址。
通过这段地址,可以发现一种网络行为——盗链。非法盗链会影响站点的正常访问。
通过http_referer模块可以控制这一点。防止非法盗链现象。

启动防盗链:展现盗链现象,启动防盗链
1) 搭建一个a.com网站

创建文件夹: mkdir   /a.com
准备配置文件指向文件夹         
	vim    /etc/nginx/conf.d/a.com.conf
	server     {
listen    80;
server_name    a.com;
location / {
root    /a.com;
index     index.html ;
}
}
在主页中插入图片
	vim    /a.com/index.html
	<img src='1.jpg' />
	注意要将1.jpg图片拷贝至网站主目录。
	加域名解析,重启nginx

在这里插入图片描述2) 搭建一个b.com网站
创建b.com.conf配置文件

mkdir   /b.com
vim    /etc/nginx/conf.d/b.com.conf
	server     {
listen    80;
server_name    b.com;
location / {
root    /b.com;
index     index.html ;
}
}
在主页中盗链A网站的图片
	vim /b.com/index.html
	<img src='http://A网站的域名或者地址/1.jpg' />
		盗用链接
	注意网站主目录中,根本没有图片。
	重启nginx

在这里插入图片描述3)访问两个网站页面。均能正常显示图片
4)分离日志
vim /etc/nginx/nginx.conf
在这里插入图片描述记得把access改成你要分离网站日志的名,重启
在这里插入图片描述日志不正常。日志莫名其妙的产生了。
观察referer字段,发现被盗链了。
在这里插入图片描述日志正常。

5) 启动a.com防盗链功能

location / {
        root   /a.com;
        index  index.html index.htm;
     
        valid_referers none blocked *.a.com;
        if ($invalid_referer) {
            return 403;
        }
    }    重启服务,再次访问b.com网站,盗链失败。

在这里插入图片描述如果希望某些网站能够使用(盗链)资源:


	生产环境
		
location ~* \.(gif|jpg|png|bmp)$ {
root /a.com
    valid_referers none blocked  *.qfcloud.top server_names ~tianyun ~\.google\. ~\.baidu\.;
    if ($invalid_referer) {
        return 403;
        #rewrite .* http://qfcloud.top/403.jpg;
    }
}
	测试环境
		location / {
        root   /a.com;
        index  index.html index.htm;
     
        valid_referers none blocked *.a.com        server_name  192.168.100.*  ~tianyun ~\.google\. ~\.baidu\.   b.com;
        if ($invalid_referer) {
            return 403;
        }
    }

6.连接状态 stub_status_module
目的:展示用户和nginx链接数量信息。
查询模块是否安装:nginx -V 2>&1 | grep stub_status
启动状态模块

  1. 访问默认站点的状态模块(注意:错误验证)
    http://192.168.152.189/nginx_status 未启用
  2. 配置状态模块 vim /etc/nginx/conf.d/default.conf
server {请写在server内
location /nginx_status {	
stub_status;
allow all;
}
}    启用该模块
  1. 重启服务再次访问
    systemctl restart nginx
    观察连接数 和请求数。
    在这里插入图片描述
解释
	Active connections: 22	当前活动的连接数
	server accepts handled requests	 

服务器接受处理请求 
	17 17 24
	17		总连接数connection(TCP)
		TCP三次握手/四次断开
		
	17		成功的连接数connection (TCP)
		    失败连接=(总连接数-成功连接数)
	24 	        总共处理的请求数requests(HTTP)
		connection    连接数,tcp连接                             
		request		    http请求,GET/POST/DELETE/UPLOAD
	Reading: 2	        读取客户端Header的信息数	     请求头
	Writing: 1		返回给客户端的header的信息数	 响应头
	Waiting: 19	        等待的请求数,开启了keepalive
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值