首页 > 其他分享 >架构师之路-学渣到学霸历程-43

架构师之路-学渣到学霸历程-43

时间:2024-11-05 20:45:10浏览次数:3  
标签:学霸 haha 43 echo nginx 学渣 location root png

NGXIN综合理解Location的作用

今天早上我们一块分享了nginx的location的意义,大概也都了解了;
今晚我们整理一个综合的实验来验证这个location的具体作用;

1、部署综合实验;

结合所有的修饰符进行测试;

这里在开始之前,添加一个echo模块;

实验之前最好就是恢复成最初的快照或者是你的环境比较干净点,比较容易排错

实验规划:

  • 服务器端:192.168.75.73
  • 客户端:192.168.75.72

服务器端添加一个echo模块:

#服务器端添加一个echo模块
	#这里就是做一个别名,方便后续敲命令而已
[root@Linux3 ~]# alias 'nginx=/usr/local/nginx/sbin/nginx'
[root@Linux3 ~]# source ./.bashrc 
	#查看一下这个原来编译的参数
[root@Linux3 ~]# nginx -V
nginx version: nginx/1.26.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx
	#准备好源码包:
[root@Linux3 ~]# ls echo-nginx-module-0.61.tar.gz 
echo-nginx-module-0.61.tar.gz
	#直接解压并且改名
[root@Linux3 ~]# tar  -xzvf echo-nginx-module-0.61.tar.gz 
[root@Linux3 ~]# mv echo-nginx-module-0.61 echo-nginx-module
	#进入到源码目录,进行编译
		#这里就使用到一个了添加的模块:--add-moduler的选项
[root@Linux3 nginx-1.26.2]# ./configure --prefix=/usr/local/nginx/ --add-module=/root/echo-nginx-module
	#编译安装
[root@Linux3 nginx-1.26.2]# make && make install 
	#然后直接升级
[root@Linux3 nginx-1.26.2]# make upgrade
	#检查一下是否安装上
[root@Linux3 nginx-1.26.2]# nginx -V
nginx version: nginx/1.26.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx/ --add-module=/root/echo-nginx-module

测试echo模块是否成功

  • 这里要注意,如果使用浏览器来查看的话,会无法显示出来
  • 直接使用服务器192.168.75.72来进行验证
#修改配置文件
[root@Linux3 ~]# cd /usr/local/nginx/
[root@Linux3 nginx]# vim  conf/nginx.conf
..........
	#找到/的location,然后注释掉后面,然后添加一个ehco的输出
        location / {
             echo "这是默认的 $request_uri";
         #   root   html;
         #   index  index.html index.htm;
        }
......
#重载配置文件
[root@Linux3 nginx]# nginx -s reload

#使用客户端进行验证-->到这里echo模块部署成功
[root@Linux2 ~]# curl 192.168.75.73
这是默认的 /
2 配置完整的location实验:
  • 我们部署echo模块都是为了这个实验的方便性
  • 添加几个location;用于验证修饰服
  • 服务器配置location
#修改服务器端的配置文件
[root@Linux3 nginx]# vim conf/nginx.conf
..........
.............#这个是整一个测试的配置
        location ~* \.(png|jpg)  {
                echo "这个是~* \.(png|jpg)的图片资源";
                echo "这个是忽略大小写的资源验证";
                }
        location ~ \.(png|jpg)  {
                echo "这个是~   大小写敏感的图片资源";
                echo "这个是大小写特别敏感的资源的资源验证";
                }
        location ^~ /haha/  {
                echo "这个是只要匹配上就停止的^~ /haha/";
                echo "这个是只要匹配上就停止其他规则的验证^~";
                }
        location = /haha/liangjiawei.png  {
                echo "这个是=  只要是对等的/haha/liangjiawe.png ";
                echo "这个是只要绝对相等就会优先级最高";
                }

#修改后检查配置文件并重启
[root@Linux3 nginx]# nginx -t
[root@Linux3 nginx]# nginx -s reload
3、验证修饰符优先级

这个实验要有点耐心;一个一个测试一个一个拿掉

第一步:先请求一个绝对的资源

  • 客户端直接访问
	#这里可以发现,如果资源一致,直接匹配=号的规则
[root@Linux2 ~]# curl 192.168.75.73/haha/liangjiawei.png
这个是=  只要是对等的/haha/liangjiawe.png 
这个是只要绝对相等就会优先级最高

第二步:去掉=的location规则,再访问看看

  • 服务器注释掉location 的=号的配置
#服务器注释规则
[root@Linux3 nginx]# vim conf/nginx.conf
..........
.............#这个是整一个测试的配置
        location ~* \.(png|jpg)  {
                echo "这个是~* \.(png|jpg)的图片资源";
                echo "这个是忽略大小写的资源验证";
                }
        location ~ \.(png|jpg)  {
                echo "这个是~   大小写敏感的图片资源";
                echo "这个是大小写特别敏感的资源的资源验证";
                }
        location ^~ /haha/  {
                echo "这个是只要匹配上就停止的^~ /haha/";
                echo "这个是只要匹配上就停止其他规则的验证^~";
                }
#        location = /haha/liangjiawei.png  {
#                echo "这个是=  只要是对等的/haha/liangjiawe.png ";
#                echo "这个是只要绝对相等就会优先级最高";
#                }

#记得重载配置文件
[root@Linux3 nginx]# nginx -s reload
  • 然后客户端再访问同样的地址
#这里可以发现:如果=号规则没有了,那么nginx直接有^~匹配开头是的规则来取代
[root@Linux2 ~]# curl 192.168.75.73/haha/liangjiawei.png
这个是只要匹配上就停止的^~ /haha/
这个是只要匹配上就停止其他规则的验证^~

第三步:再把这个^~这个的location规则注释,访问查看

  • 服务器注释掉location 的=号的配置
#服务器注释规则
[root@Linux3 nginx]# vim conf/nginx.conf
..........
.............#这个是整一个测试的配置
                }
        location ~* \.(png|jpg)  {
                echo "这个是~* \.(png|jpg)的图片资源";
                echo "这个是忽略大小写的资源验证";
                }
        location ~ \.(png|jpg)  {
                echo "这个是~   大小写敏感的图片资源";
                echo "这个是大小写特别敏感的资源的资源验证";
                }
#        location ^~ /haha/  {
#                echo "这个是只要匹配上就停止的^~ /haha/";
#                echo "这个是只要匹配上就停止其他规则的验证^~";
#                }
#        location = /haha/liangjiawei.png  {
#                echo "这个是=  只要是对等的/haha/liangjiawe.png ";
#                echo "这个是只要绝对相等就会优先级最高";
#                }

#记得重载配置文件
[root@Linux3 nginx]# nginx -s reload
  • 然后客户端再访问同样的地址
#这里我们也可以发现,匹配的规则是忽略大小写的匹配规则出现在我们眼前
	#问题:我们命名指定png,为什么不是~规则出现?
[root@Linux2 ~]# curl 192.168.75.73/haha/liangjiawei.png
这个是~* \.(png|jpg)的图片资源
这个是忽略大小写的资源验证

第四步:验证位置;

  • 检查一下locaton的规则
  • 总结就是同时正则的规则,可以按照配置文件中的先后进行匹配(从上往下的顺序)
#配置文件调位置-->两个location的位置对调

.........
        location ~ \.(png|jpg)  {
                echo "这个是~   大小写敏感的图片资源";
                echo "这个是大小写特别敏感的资源的资源验证";
                }
        location ~* \.(png|jpg)  {
                echo "这个是~* \.(png|jpg)的图片资源";
                echo "这个是忽略大小写的资源验证";
                }
#       location ^~ /haha/  {
#               echo "这个是只要匹配上就停止的^~ /haha/";
#               echo "这个是只要匹配上就停止其他规则的验证^~";
#               }
#       location = /haha/liangjiawei.png  {
#               echo "这个是=  只要是对等的/haha/liangjiawe.png ";
#               echo "这个是只要绝对相等就会优先级最高";
#               }
#记得重载配置文件
[root@Linux3 nginx]# nginx -s reload

#验证是~这个规则出来
[root@Linux2 ~]# curl 192.168.75.73/haha/liangjiawei.png
这个是~   大小写敏感的图片资源
这个是大小写特别敏感的资源的资源验证

最后:把所有的规则都去掉

#服务器修改配置文件
[root@Linux3 nginx]# vim conf/nginx.conf

......
        location / {
             echo "这是默认的 $request_uri";
         #   root   html;
         #   index  index.html index.htm;
        }
#       location ~ \.(png|jpg)  {
#               echo "这个是~   大小写敏感的图片资源";
#               echo "这个是大小写特别敏感的资源的资源验证";
#               }
#       location ~* \.(png|jpg)  {
#               echo "这个是~* \.(png|jpg)的图片资源";
#               echo "这个是忽略大小写的资源验证";
#               }
#       location ^~ /haha/  {
#               echo "这个是只要匹配上就停止的^~ /haha/";
#               echo "这个是只要匹配上就停止其他规则的验证^~";
#               }
#       location = /haha/liangjiawei.png  {
#               echo "这个是=  只要是对等的/haha/liangjiawe.png ";
#               echo "这个是只要绝对相等就会优先级最高";
#               }

#记得重载配置文件
[root@Linux3 nginx]# nginx -s reload

#验证:最后是默认的出俩了
[root@Linux2 ~]# curl 192.168.75.73/haha/liangjiawei.png
这是默认的 /haha/liangjiawei.png

分享环节:

hi,亲爱的朋友们:

  • 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
  • 资源免费共享;有需要滴滴,(仅仅是我有的)

我的坚持初衷:

标签:学霸,haha,43,echo,nginx,学渣,location,root,png
From: https://blog.csdn.net/Liang_GaRy/article/details/143527166

相关文章

  • P4383 [八省联考 2018] 林克卡特树
    简化题意,给一棵树,找出恰好\(k+1\)条链,是这些链之和最大。有恰好选出的字眼,并且原问题显然具有凸性,直接考虑wqs二分。然后每条链会减去二分的\(mid\),然后没有限制,求最大链和及链的数量,考虑树形dp。设\(f_{x,0/1/2}\)表示以\(x\)为根的子树,\(x\)点入度为\(0/1/2\)所......
  • 架构师之路-学渣到学霸历程-41
    Nginx的常用模块说明今晚继续分享nginx的常用模块;最后分享多三个;实验出真知,努力才有结果,让我们都看看这个模块的是怎么使用的;1、stub_status模块讲解这个是状态查看模块,这个模块是可以直接输出nginx的基本状态信息语法:格式: stub_status;作用范围:server location实......
  • MT1421-MT1430 码题集 (c 语言详解)
    目录        MT1421·异或        MT1422·总位数        MT1423·被3整除        MT1424·卡特兰序列        MT1425·小码哥的序列        MT1426·普洛尼克数        MT1427·素数序列        MT1......
  • TL431
      浅谈一下TL431的工作原理和用法-CSDN博客......
  • AbMole|RS 504393(CAS号300816-15-3)
    RS504393是一种高度选择性的CCR2趋化因子受体拮抗剂,作用于人重组CCR2和CCR1受体,IC50值分别为89nM和>100μM。RS504393抑制MCP-1诱导的趋化性,IC50为330nM。RS504393处理显著抑制过敏原诱导的β-己糖胺酶释放。生物活性RS504393是一种高度选择性的CCR2......
  • 学习记录:STM32G431CBU6的多通道ADC采样串口打印(HAL库)
    一配置  二代码uint16_tGet_adc(){//启动ADC1HAL_ADC_Start(&hadc1);//等待ADC转换完成,超时为100msHAL_ADC_PollForConversion(&hadc1,100);//判断ADC是否转换成功if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC)......
  • 开关电源中的“神器”-TL431过压保护电路如何计算?
    更多电路设计,PCB设计分享及分析,可关注本人微信公众号“核桃设计分享”!TL431想必大家都不陌生吧!核桃在实际项目中也经常用到这个芯片,好用还便宜,谁不爱和三极管长的很像,千万不要以为他是三极管。那开关电源中的过压保护电路是如何用TL431来实现呢?(注:这里暂时不展开讲解过压自......
  • 信息安全数学基础(43)理想和商环
    理想(Ideal)定义:设R是一个环,I是R的一个非空子集。如果I满足以下条件,则称I为R的一个理想:对于任意的r1,r2∈I,有r1-r2∈I(加法封闭性)。对于任意的r∈I,s∈R,有rs,sr∈I(乘法封闭性,且对环中任意元素都封闭)。性质:理想是环的一个子环,但比子环更“特殊”,因为它还......
  • 架构师之路-学渣到学霸历程-39
    Nginx的常用模块说明nginx有很多的模块可以使用,每个模块都有自己的特定的功能;如果想要掌握好,就一点点的测试,其实也花了很多的时间整理这些笔记;学习&分享:开始了~!access模块讲解1、access模块访问控制模块,该模块可以实现简单的防火墙功能,过滤特定的主机。这个模块可以在预编......
  • 《使用Gin框架构建分布式应用》阅读笔记:p393-p437
    《用Gin框架构建分布式应用》学习第17天,p393-p437总结,总45页。一、技术总结1.PrometheusPrometheus放在代码里面使用,还是第一次见。在本人实际的工作中未看到这种用法。2.GrafanaGrafana用于被监控数据的可视化。3.TelegrafTelegraf用于数据采集。在本人的实际工作中用得是......