本帖最后由 LukeLiu 于 2020-4-23 14:30 编辑
如何为活字格加持反向代理
从安装开始
如上篇帖子开头所言,本系列帖子选用Nginx作为主要的反向代理服务器。不同的系统环境适配不同的安装方式,相信大家可以在网上找到对应的教程。这里我贴出Ubuntu环境下Nginx。
写在动手实现之前:大家不必拘泥与本文所使用的的系统平台,与软件版本,没必要严格保持一致。也因此,我们之间的对于同一种工具,比如Nginx的配置文件的路径信息与操作方式不尽相同。但我们仍要明白的是:究竟在实现下面3中场景中,它具体的目的。这样即使你那边配置上遇到了问题,也可以通过这些字眼:
1. Nginx 如何安装
2. Nginx 如何配置反向代理
3. Apache 如何配置反向代理
4. Nginx 如何定义URL匹配规则
这些字眼加上自己具体的系统平台,软件版本,从自己的实际问题出发,从其他网站获得垂直的信息帮助支持。
而本文,更多的是通过我们的个人环境,展示出运用反向代理技术扩宽活字格的使用场景。
动手实现
咱们一起上手使用反向代理,支持实现以下场景的特定需求。为了让格友们直观的看到效果,也为了尽最大限度的模拟真实场景,实验过程中使用了三**立的服务器,保证了每一层的请求转发都发生在真实的网络环境中。基础信息如下: 主机域名 | 作用 | 平台 | xa-hzg.blingblingbling.life | 活字格服务管理器(v6.0.1.0)所在的服务器 | Windows Server 2012 | global-nginx.blingblingbling.life | 提供Nginx服务的服务器 | Ubuntu 18.04 , Linux | xa-apache.blingblingbling.life | 提供Apache服务的服务器 | Ubuntu 18.04 , Linux |
并且,我的活字格服务器上,已经在80端口发布了一个应用,应用名分别为"app1" :
场景1:实现通过Nginx访问活字格应用
如图所示的反向代理模式,我们一起边看视频一边实现:
重点步骤文字记录:
1. 修改Nginx的配置文件/etc/nginx/nginx.conf , 添加配置如下:
- ......
- gizp on; # 开启gzip
- ......
- upstream hzg {
- server 活字格服务器的域名或者IP:发布应用的端口号; # 比如:xa-hzg.blingblingbling.life:80
- }
- server {
- listen 8080; # 设置Nginx监听的端口
- location / {
- proxy_pass http://hzg/;
- # proxy_http_version 1.1; # 若活字格服务器版本低于6.0,需要取消此行注释
- }
- }
复制代码
配置完成后,记得重启Nginx服务器哦。
场景2:实现以自定义前缀的URL通过Nginx访问活字格应用
有时候,格友为了更好的组织业务系统的层级关系,会在请求到活字格应用的URL中添加自定义前缀,也就是需如图这样的转发需求。 这里补充一个活字格技术细节更新背景: 活字格6.0之前,应用网页里依赖的静态资源使用的是绝对地址。6.0版本之后,改用了相对地址。别小看这一点点的改变,对于本次练习的实现影响巨大!
6.0之前,我们还需要在反向代理服务器里实现重写静态资源的URL,以保障浏览器可以正常请求到静态资源,避免一大堆的404错误,掣肘了用户正常使用。6.0之后,我们就不必考虑这麻烦事了,我们可以直接在活字格服务管理器上配置自定义URL前缀,之后,就可以像练习1一样,只需定义你期望的URL前缀是什么,用户的浏览器端所有http请求就都是正常的。
如果非要残忍的说,面对这个场景,6.0之前的格友别折腾了,人生苦短,一大堆又一大堆的复杂配置冷暖自知。6.0之后的格友,恭喜你们,快快喜提这项神奇技能。
下面,我们一起看着视频动手实现:
重点的步骤文字说明: 1. 修改Nginx端的配置文件
- upstream hzg {
- server 活字格服务器的域名或者IP:发布应用的端口号; # 比如:xa-hzg.blingblingbling.life:80
- }
- server {
- listen 80; # 设置Nginx监听的端口
-
- location ^~/自定义多层级的前缀/ { # 比如:^~/xa/public_app
- proxy_pass http://hzg/;
- # proxy_http_version 1.1; # 若活字格服务器版本低于6.0,需要取消此行注释,使该行配置生效
- }
- }
复制代码
2. 修改活字格服务器端的全局配置文件:实现添加应用的反向代理前缀。这部分对应视频理解。
场景3:实现通过多层代理后访问活字格应用
练习这个场景的实现,并不是我们瞎胡闹,纯粹为了炫技,这个练习是有真实案例背书的: 一位格友所在的公司隶属于某个大集团,集团网络安全规定,集团所属的服务器均在集团内网。外网访问某一业务系统时,必须要先通过集团的全局负载均衡器,再把请求通过集团专线转给各分公司负载均衡器,再把请求转给目标服务器。
噫,我滴个乖乖啊,咋这么能绕啊,抓狂状!
好呗,还是一起看视频一起实现:
是不是有了场景1与场景2的理解基础,场景3的实现会被我们立马拿下!
重点步骤的文字说明:
1. 首先,我们先调整中间层反向代理端的配置,实现流量的接受与中转。这里以Apache服务器为中间层代理。修改Apache的配置文件:/etc/apache2/sites-available/000-default.conf - <VirtualHost *:9898>
- ServerName xa-apache.blingblingbling.life
- ProxyRequests Off
- <Location "/">
- ProxyPass http://xa-hzg.blingblingbling.life/
- ProxyPassReverse http://xa-hzg.blingblingbling.life/
- Order allow,deny
- Allow from all
- </Location>
- </VirtualHost>
复制代码注:还有,你定义的虚拟主机的监听端口,需要在Apache服务器的配置文件里注册,否则你会发现Apache端请求不通,这部分视频里展示!
2. 修改Nginx端的配置
- upstream apache {
- server apache服务器的域名或者IP:端口 # 比如: xa-apache.blingblingbling.life:8080
- }
- server {
- listen 80; # 设置Nginx监听的端口
-
- location ^~/xa/public_app/ {
- proxy_pass http://apache/;
- # proxy_http_version 1.1; # 若活字格服务器版本低于6.0,需要取消此行注释,使该行配置生效
- }
- }
复制代码
3. 修改活字格服务器端的全局配置文件:实现添加应用的反向代理前缀。此步骤以同场景2的第2步。
总结
使用反向代理,可以让我们分层的去设计整个系统,让咱们的活字格应用拥有 “架构感”,从而为之前的很多问题带来了新的解决思路,比如,访问控制;静态资源加速;高可用保障等。
并且,加持反向代理服务器后,我们从整体的视角再去看我们的使用活字格开发的线上系统,前面的杂事交给反向代理服务器老大哥帮活字格顶住,保障打给活字格服务器的请求都是合法的且合理的,让咱们的活字格专注的提供业务服务。纵使“天塌了”——后台服务全挂了,借助云反向代理服务器依然能够保障我们的系统有所响应,比如返回给用户一些静态的提示信息,让访问者获悉目前的状态,会比无停歇的加载状态,增加系统使用体验的友好度。
因此,当你正好有为活字格服务器加持反向代理的需求,希望本文能够有帮助到你。
|