nginx web模块

一、连接状态

1、状态模块:stub_status_module

2、目的:观察用户与 nginx 服务器的链接数量。

3、启用状态模块

(1) 配置状态模块

当有人访问 /nginx_status 这个页面时,给他看 stub_status 这个模块,授予所有用户访问权限。

(2) 连接 nginx 服务器的客户机数量和连接次数。

Active connections:当前活跃的连接数。

server accepts handled requests:服务器处理的请求数:总连接数、成功连接数、总共处理的请求数。

(3) 链接:TCP 机制

① 三次握手:通信双方建立可靠的连接通道。

客户端向服务端发送建立TCP连接的请求报文;

服务器接收成功后,回传数据包传递确认信息,表示收到了客户端的请求;

客户端再回传数据包,表示接收到服务端的确认信息,握手结束。

② 四次断开:确保客户端和服务器双方都知道连接断开,防止资源浪费和服务器堵塞。

客户端发送一个用于终止连接的报文,表示想要断开连接;

服务端收到这个报文后,会发送数据包表示已经接收到这个报文;

然后,服务端发送一个数据包给客户端,表示同意断开连接;

最后,客户端再次发回数据包,表示已经接收并确认服务端的断开请求。

③ TCP 流量控制

TCP 根据接收端能力来决定发送端的发送速度,避免发送方发送的数据过快,接收方来不及接收而导致数据丢失。

窗口大小:接收端向发送端主机通知自己可以接受数据的大小,这个大小限制就叫做窗口大小。发送方的发送窗口大小不能超过接收方给出窗口大小。

(4) 请求:一次 HTTP 查询

指浏览器接受到 URL 后,会将其中的域名部分发送给本地的 DNS 服务器,DNS 服务器会进行解析,将域名解析为对应的 IP 地址,然后将这个 IP 地址返回给浏览器,这样浏览器就可以通过这个 IP 地址访问对应的主机。

(5) 长连接设置:Keepalived

Keepalived 长连接设置是指客户端与服务器之间保持长时间的 TCP 连接。客户端和服务器进行三次连接,完成进程后,不会马上进行四次断开,而是在 keepalive_timeout 设置的时间里等待下一个进程,超时才会进行四次断开。

二、随机主页

1、随机主页模块:random_index_module

2、目的:让 HTTP 的默认主页随机生成,给用户不同的展示效果。

3、启动随机主页:在配置文件中写入随机主页模块的配置信息:

random_index on;

重启 nginx 后,便可观察到随机主页的切换效果。

三、替换模块

1、替换模块:sub_module

2、作用:网页内容替换

3、启动替换:nginx 默认页面里只要出现 'nginx',就替换成 'bean'

sub_filter nginx 'bean';

sub_filter_once off; (sub_filter_once 默认是 on,表示只替换一次,设置为 off 则全局替换)

替换效果:

四、文件读取

1、模块:ngx_http_core_module

2、原理:

(1) sendfile(默认开启)

sendfile是一个系统调用,它可以在两个文件描述符之间直接传递数据,避免了不必要的数据复制操作,提高了数据传输的效率和性能。

(2) tcp_nopush

应用程序每产生一次操作就会发送一个包,浪费资源,且易发生网络堵塞。而 tcp_nopush 的作用就是数据包累计到一定大小后再发送,提升网络传输效率。

五、文件压缩

1、模块:ngx_http_gzip_module

2、作用:使文件传输前进行压缩,优化运行,提高传输效率。

3、启用压缩功能:

观察压缩效果:

六、页面缓存

1、模块:ngx_http_headers_module

expires 字段用于设置网页的过期时间,起到控制页面缓存的作用,减轻服务器端的压力。

2、浏览器缓存

(1) 开启浏览器缓存,访问界面,第一次返回状态码 200,第二次返回状态码 304

当第一次请求网页时,服务器会返回状态码200,表示成功响应请求,浏览器会将页面的内容和 HTTP 头信息缓存起来。

当再次请求这个页面时,浏览器会先检查缓存中的页面是否有过期时间。如果没有过期,服务器会检查页面是否有更新。如果页面没有更新,服务器会返回一个状态码304,浏览器就会直接从缓存中获取页面,而不需要再次向服务器请求。

(2) 若开启禁用缓存,则访问页面的返回状态码一直是 200。

3、开启 nginx 缓存模块

重启 nginx 服务器后查看缓存时间:

七、防盗链

1、链接、盗链与防盗链

① 链接:将互联网上的两个或多个网页相互连接起来,使用户可以通过点击从一个页面跳转到另一个页面;

盗链:盗链是指服务提供商直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取用户的浏览和点击率。

防盗链:防盗链则是一种保护资源不被盗用的技术手段,阻止未经授权的网站或客户端访问受保护的资源链接。

2、防盗链实验:

(1) 配置 a.com

在 /etc/nginx/conf.d/ 写入 a.com.conf

在 a.com 里写入 index.html,并放入一张图片

在 /etc/hosts 里进行域名解析:192.168.198.133 a.com,再打开 a.com

若图片无法浏览,则要给图片赋予读的权限

(2) 配置 b.com

vim /etc/nginx/conf.d/b.com.conf

搭建 b.com 网站,在主页中盗链 A 网站的图片

重启 nginx 服务后访问 b.com

(3) 观察 a.com 与 b.com 的日志

① 剥离 a 网站与 b 网站的日志:

在 a 网站的配置文件下修改日志存放位置(b 网站同理)

配置完后重启 nginx 可发现 a 网站和 b 网站的日志已被分离:

② 观察日志

a 网站日志分析:

192.168.198.133 - - [14/Sep/2023:16:48:27 +0800] "GET /1.png HTTP/1.1" 304 0 "http://b.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" "-"

a 网站的日志记录会增加,观察 referer 字段,发现被盗链

● "$http_referer":记录页面从哪个链接访问过来的("http://b.com/")

(4) 启动 a.com 防盗链功能

以 .a.com 结尾的请求头都不可用,如果有访问,则返回 403,服务器拒绝客户端请求。(这种写法 a 网站的请求也会被屏蔽,写法不规范,仅为实验目的)

再次访问 b 网站,图片无法显示

(5) 盗链白名单

防盗链白名单允许网络服务提供商定义一组被允许的引用域名(或IP地址),只有来自这些白名单上的域名的请求才会被正常响应。

再次访问 b 网站:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值