代理和 Session 机制|学习笔记

本文涉及的产品
.cn 域名,1个 12个月
简介: 快速学习代理和 Session 机制

开发者学堂课程【Tomcat 服务器入门详解代理和 Session 机制】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/654/detail/10847


四、httpd 和 Tomcat 实践

# yum install httpd -y

# httpd -M

# httpd -M | grep proxy

proxy_module (shared)

proxy_ajp_module (shared)

proxy_balancer_module (shared)

proxy_http_module (shared)

主要是 HTTPD Tomcat 的结合,httpd 刚才已经安装过了,这个实际上我们来看

主要是有几个模块,代理要写这模块, nginx 深受它的影响,nginx 也有很多模块,尤其像淘宝改版的东西,还可以动态模块加载,这样就方便不下线就可以把这些模块动态的进行加载,能够比较好的支持线上的业务。

下面已经被停止过了,先来一下 httpd,这块与代理相关的,全是 proxy 开头的。

图片4.png

一会要去试 AJP 的连接,还有就是 balancer 做负载均衡。基础用 proxy,这些模块的默认全部都有。

再看 balancer,当中它的几个叫做 load balancer,load balance 的 method

图片5.png

这个方法没问题,by requests 是它默认的意思就按请求轮巡。traffic 就跟交通有关就看交通的压力了访问了多少问题,还有一些都是跟 busyness,和业务相关,就是与服务器的压力有关了。

如果服务器在用的过程中会发现有些机器不堪重负,因为是几年前的机械不堪重负,或者买一个云的时候,给资源分少了,不够跑不动所以这个时候就得按照负荷来,已经不堪重负,虽然压力比较小,即给的请求虽然比较少,但是已经不堪重负了,就是看流量。

虽然是发了一个请求,但是传好多的数据而那边发的请求虽然多,但是每一次发的数据量都比较小,流量比较小,所以负荷也比较小还有多语种以前没有。这些模块就是要用的东西,要在这上面去做一些调整。

1、httpd 配置

(1)proxy_http_moduie 模块代理配置

ProxyRequests Off

ProxyVia on

ProxyPreserveHost on

ProxyPass / http://127.8.0.1:8080/

ProxyPassReverse / http:/ /127.0.0.1:8080/

ProxyRequests: Off 关闭正向代理。

ProxyPass: 反向代理指令。

ProxyPassReverse: 保留代理的 response 头不重写(个别除外)。

ProxyPreserveHost: On 开启。让代理保留原请求的 Host 首部。

ProxyVia: On 开启。代理的请求响应时提供一个 response 的 via 首部。

在虚拟主机中,星代表管来的是什么,只要访问这台机器的80端口,都可以通过,当然也可以写域名匹配或者IP的匹配。其实到了80不管什么都往后扔通过代理往后,ProxyRequests 要关掉是正向代理。

主要是下面这一项 Proxypass /http://127.0.0.1:8080/,代理都后台去,但是写域名不靠这个,要靠 ProxyPreserveHost On,也就是发来的请求头里面的请求头部的有一个字段叫 host 字段里面是有域名的。On 往后带如果往后就有问题了。

IP 来了,host 没有的话就没法匹配,没法匹配就能看到管理界面,如果带上,到时候用域名访问把它带上了,就能看到自己写应用,进行测试。

ProxyVia on 就是在代理这一级的响应头,响应的时候会带 via可以开也可以关,不留其实也可以,对方能够通过一些信息,是能够判断出你的部署的,甚至能知道用的是什么样的服务,甚至知道用什么版本,然后进行攻击所以让他知道的越少越好。

ProxyPassReverse 这一项保留 response 头部,不重写,但个别的还是要写下来。

2)配置

Vim/etc/httpd/conf.d/httptomcat.conf

一起分享的有没有 HD,有的话我们看看抗压性配置文件,分散流上去在这下面随便加一个,然后把这个东西粘过来,这样就配置文件了,配置文件有了以后,然后就看到时候会不会加载,在这最好做一下这样测试语法是通过才可以,就是做内容的没给对,这是一个警告

接下来就可以直接启动一下。Systemct1 start httpd 别到端口冲突就行,看看办案端口 httpd 起来了,这就行了,来试一下刚才在配置中直接复制,实际上是打开了域名往后带的这个东西后续的字段网络带的东西,分别可以使用这个东西来试一下,这是用IP的,然后去掉了。

下面整个域名来看这两个,为什么看两个呢,因为主目录去掉,那么就直接访问这个就行了。主目录 document root 没被弄掉,把这个改掉就行了,或者直接禁就行了。

直接访问 index.jsp 是不是跑到后面 index,hb 不能解释 JSP了Jsp 是后面自己写的应用如果用这个来访问的话,这就是管理页面也就是说这个是可以的。配置这一项,从这个 on 给它改成 off。不管是域名访问,还是用IP访问,现在最新的应用是看不见了,但是必须得把它回头就行了。

首先最好还是先刚提一下,应该先刚提一下。强制的我们回到刚才那一页,强制的给它刷一下,因为有的时候它会有本次的第一个保存。现在看不到了跑到 local 后市场去了没有跑到自己配置开的虚拟主机上去,这说明已经配成功了。

2、Proxy_ajp_module 模块代理配置

(1)http 访问

下面了解一下 XP,然后可以看一下这里面这个状态,访问的都是通过 HTTP 来进行访问的,ajp 到现在是没访问。那么下面就是在来改变这个状况。怎么改是把刚才要改一下。

实际上是通过 SB 的方式要对它进行一个修改,这块刚才已经测试过了,块的协议给它改掉就行了。

前面协议到 APP,后面端口要改到8009上去,要把这个要改一下就行了。

就在原来这个基础上进行修改, off 也可以,主要是看用 agb 连接成功了没有。当然下面这一项可以不要了,在这个 AJP 上面可以不要,没有问题。语法是正确的, Systemct1 reload http,重启了。再来看一下 CTRL F,现在连接已经变成 HP 了。

(2)二进制协议

二进制协议有自己格式在官网上面是有这一块的内容,格式是比较多的,在官网上有这块内容可以去了解一下,没兴趣就知道想的稍微高一点就行了,到里面去主要是通过这个东西来区分一下就行了。

这块的测试都比较简单,那么到底是用 ajp 还是 ajp,工作中用的最多可能还是nginx 这个这个时候就不用 ajp。

(3)优化代码

图片6.png

真正在写代码的过程中,会考虑如何将压力少压在 Tomcat 的服务上,这个从写代码的过程中就得考虑,之后再优化,架不住把所有压力都给 Tomcat 的,部署优化没有用,写代码的时候应该是这样的原则,能够少去请求后端的服务,就应该少做这事儿。该要的数据要,不该要的数据就不能拿。

有些不注意,一条语句过去了有时候在代码上要做一些优化,就是内存要合理的运用,带宽要合理的运用,这才能写出好的程序,这样部署可以了,不然的话你这边部署想再好的都没用了,比如说可以把动态的进行缓存,缓存的前提是应该在一段时间内它的使用比较频繁,且获取代价较高。

在这段时间内,只要在这段时间内它不变,且获取代价比较高,而且还是比较频繁的使用,才有必要缓存,如果在一段时间内一直都变,比如获取随机数,就没有必要缓存,所以这几个条件都得加到一起才行,说不但这个数据有价值,而且有一段时间不变,这已经开始可以了,再一个还得高频时间

总之还是架构不要想一天就可以把它搭好,这个公司写了个项目很小,别用这种东西了别人的东西怎么简单,其实维护的代价也低,当真的是像前面说微服务的服务多,问题都有可能,服务治理就是个大问题,所以有什么样的水平,然后做什么样的事,这是最合适的。

相关文章
|
6月前
|
存储 缓存 搜索推荐
session 详解:掌握客户端会话管理
session 详解:掌握客户端会话管理
|
6月前
|
存储 前端开发 程序员
|
6月前
|
数据安全/隐私保护
Session 管理以及Cookie 应用最简单实例
Session 管理以及Cookie 应用最简单实例
Session的工作机制
Session的工作机制
81 0
|
缓存 负载均衡 Java
代理和 Session 机制(1)|学习笔记
快速学习代理和 Session 机制
代理和 Session 机制(1)|学习笔记
|
存储 负载均衡 安全
代理和 Session 机制(4)|学习笔记
快速学习代理和 Session 机制
代理和 Session 机制(4)|学习笔记
|
缓存 Java 应用服务中间件
代理和 Session 机制(2)|学习笔记
快速学习代理和 Session 机制
代理和 Session 机制(2)|学习笔记
|
存储 安全 Java
|
存储
Cookie 原理 和 Session 原理的区别:
Cookie 原理 和 Session 原理的区别:
137 0
Cookie 原理 和 Session 原理的区别: