netty组件介绍(2)-channel组件
ChannelHandler组件介绍ChannelHandler组件包含了业务处理核心逻辑,是由用户自定义的内容,开发人员百分之九十的代码都是ChannelHandler。Netty提供2个重要的 ChannelHandler 子接口,用来自定义ChannelHandler: ChannelInboundHandler - 处理进站数据和所有状态更改事件(进站指的是读操作等由通道引发的事件) ChannelOutboundHandler - 处理出站数据,允许拦截各种操作(出站指的是写操作等由用户触发的事件,发送到远方服务器的事件) 来看一下ChannelHandler的类层次结构: 上面的类中的Adapter类,提供很多默认操作,比如ChannelHandler中有很多很多方法,我们用户自定义的方法有时候不需要重载全部,只需要重载一两个方法,那么可以使用Adapter类,它里面有很多默认的方法。其它框架中结尾是Adapter的类的作用也大都是如此。所以我们在使用netty的时候,往往很少直接实现ChannelHandler的接口,经常是继承Adapter类。 Cha...
nginx_location优先级
nginx location语法第一优先级 = : 完全匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 第二优先级 ^~ : 普通字符匹配。优先使用前缀匹配。如果匹配成功,则不再匹配其他location。 第三优先级 ~ : 区分大小写匹配 第三优先级 !~ : 区分大小写不匹配 第三优先级 ~* : 不区分大小写匹配 第三优先级 !~* : 不区分大小写不匹配 第四优先级 /{uri} : 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。 第四优先级 / : 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。 123456789101112131415161718192021222324location = / {# 只匹配 / 查询。}location / {# 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。}location ^~ /p_w_picpaths/ {# 匹配任何已 /p_w_picp...
nginx的server_name
listen 后可以指定 IP:port的IP地址和端口 仅IP(端口将默认为80) 仅port,将监听所有接口的这个port 到某个Unix socket的路径(在服务器间转发请求的时候会用到) 在将listen的值与请求进行匹配之前,Nginx会先将listen的值中所缺省的部分补充完整。然后将优先匹配准确的IP,如果不存在完全准确匹配的IP才会匹配到0.0.0.0,如果有多个IP:port匹配度相同,Nginx将会继续检查server_name server_name 指令Nginx将server_name与请求头中的Host进行匹配,匹配的顺序: 优先选择第一个精确匹配到的block。12345server { listen 80; server_name host.example.com; ...} 选择以*开头的进行匹配,并优先选择最长的。12345server { listen 80; server_name *.example.com; ...} 选择以*结尾的进行匹配,并优先选...
nginx大全学习网站
nginx大全学习网站
nginx通过正则获取url中的某个值
例子:如果url符合正则格式并且$temp_flag正则匹配11111,则代理到bbb,否则代理到aaa123456789set $proxy_path aaa;# 此处通过正则获取url第一个括号里的值,赋值给temp_flagif ( $request_uri ~ ^\/([0-9a-z]+)\/(.*) ){ set $temp_flag $1;}if ($temp_flag ~ (^11111$)) { set $proxy_path bbb;}proxy_pass http://$proxy_path; uri和request_uri的区别 request_uri: 这个变量等于从客户端发送来的原始请求URI(最原始的),包括参数,它不可以进行修改。$uri变量反映的是重写后/改变的URI(最终的),不包括主机名。例如:"/foo/bar.php?arg=baz" uri: 这个变量指当前的请求URI,不包括任何参数(见$args)。这个变量反映任何内部重定向或i...
proxy_pass路径的唯一拼接规则
proxy_pass 只是HOST,不可以包含任何路径 如果proxy_pass后面没有任何URL路径信息(比如/,/xxx等),则反向代理的地址会包含location中的匹配部分,否则只会拼接匹配后的剩余路径 PS: 上面是最重要且唯一的一条规则,请记住 多种情况验证假设请求:http://localhost/online/wxapi/test/loginSwitch 第一种情况12345proxy_pass`结尾有`/location /online/wxapi/ { proxy_pass http://localhost:8080/; proxy_set_header X-Real-IP $remote_addr;} 代理后的实际地址:http://localhost:8080/test/loginSwitch 第二种情况12345proxy_pass`结尾没有`/location /online/wxapi/ { proxy_pass http://localhost:8080; pr...
关于rewrite的妙用
Rewrite模块现在 Nginx 已经成为很多公司作为前端反向代理服务器的首选,在实际工作中往往会 遇到很多跳转(重写 URL)的需求。比如更换域名后需要保持旧的域名能跳转到新的域名 上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。如果在后端使用的 Apache 服务器,虽然也能做跳转,规则库也很强大,但是用 Nginx 跳转效率会更高 Rewrite功能rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。 rewrite 只能在server {}location {}if {}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用 例如:京东登录账号,就是一个跳转 只针对“?前域名后”重写 Rewrite跳转场景 可以调整用户浏览的 URL,看起来更规范,合乎开发及产品人员的需求 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态 URL 地址伪装成静态地址提供服务 网址换新域名...
利用nginx实现客户端证书认证
生成crt/key1略 生成p12证书1openssl pkcs12 -export -clcerts -in rancher.sopei.k3s.cn.crt -inkey rancher.sopei.k3s.cn.key -out s.p12 需要把证书打包成p12格式的证书文件,然后在客户端的电脑上导入。同样的在生成p12文件的时候我们最好添加一个密码保护,这样就算证书泄露了也不会导致安全问题。 配置nginx1234# 客户端公钥证书ssl_client_certificate /path/to/root.crt;# 开启客户端证书验证ssl_verify_client on; Nginx配置Https单向认证、双向认证以及多证书配置: https://juejin.cn/post/6925361984183631885
记录nginx正则规则
记录nginx正则规则* 零次或者多次匹配前面的字符表达式,等效于{0,}.; zo*与“zo”和“zoo”匹配 + 一次或者多次匹配前面的字符表达式,等效于{1,};zo+与“zoo”匹配但是与“z”不匹配 ? 零次或一次匹配前面的字符或子表达式。当该字段紧随任何其他限定符(*、+、?、{n}、{n,}或{n,m})之后时,匹配模式是非常贪婪的,非贪婪模式匹配搜索到的、尽可能少的字符串,而默认的贪婪模式匹配搜索到的、尽可能多的字符串。zo? 与“z”和“zoo”不匹配;o+?只于“oooooo”中的单个o匹配。而o+与所有的“o”匹配。do(es)?与do或者does中的do匹配 ^ 匹配搜索字符串以什么开始。如果将^用作括号表达式中的第一个字符,则会对字符集求反,^\d{3}与搜索字符串开始出的3个数字匹配。[^abc]与除abc以外的任何字符匹配 $匹配搜索字符串以什么结尾,\d{3}$匹配任何3个数字结尾的 . 额这里其实是一个点号;匹配除了换行符\n之外的任何单个字符 [] 标记括号表达式的开始和结尾,[1-4]与1,2,3,4匹配。[^aAeE],除了a,A,...
springboot2学习笔记
转自: https://blog.csdn.net/u011863024/article/details/113667634#01SpringBoot2_18 https://blog.csdn.net/u011863024/article/details/113667946 代码地址: https://gitee.com/xiaowu_wang/springboot2 01、基础入门-SpringBoot2课程介绍 Spring Boot 2核心技术 Spring Boot 2响应式编程 学习要求-熟悉Spring基础-熟悉Maven使用 环境要求 Java8及以上 Maven 3.3及以上 学习资料 Spring Boot官网 Spring Boot官方文档 本课程文档地址 视频地址1、视频地址2 源码地址 02、基础入门-Spring生态圈Spring官网 Spring能做什么Spring的能力 Spring的生态覆盖了: web开发 数据访问 安全控制 分布式 消息服务 移动开发 批处理 … Spring5重大升级 响应式编程 内部源码设...
