找回密码
 立即注册

QQ登录

只需一步,快速开始

LukeLiu
超级版主   /  发表于:2020-3-27 18:37  /   查看:7000  /  回复:0
本帖最后由 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" :
image.png952355041.png

场景1:实现通过Nginx访问活字格应用

image.png929786376.png

如图所示的反向代理模式,我们一起边看视频一边实现:



重点步骤文字记录:

1. 修改Nginx的配置文件/etc/nginx/nginx.conf ,  添加配置如下:

  1. ......
  2. gizp on; # 开启gzip
  3. ......

  4. upstream hzg {
  5.     server 活字格服务器的域名或者IP:发布应用的端口号; # 比如:xa-hzg.blingblingbling.life:80
  6. }

  7. server {
  8.     listen 8080; # 设置Nginx监听的端口
  9.     location / {
  10.         proxy_pass http://hzg/;
  11.         # proxy_http_version 1.1; # 若活字格服务器版本低于6.0,需要取消此行注释
  12.     }
  13. }
复制代码

配置完成后,记得重启Nginx服务器哦。

场景2:实现以自定义前缀的URL通过Nginx访问活字格应用

image.png727453918.png
有时候,格友为了更好的组织业务系统的层级关系,会在请求到活字格应用的URL中添加自定义前缀,也就是需如图这样的转发需求。
这里补充一个活字格技术细节更新背景:
活字格6.0之前,应用网页里依赖的静态资源使用的是绝对地址。6.0版本之后,改用了相对地址。别小看这一点点的改变,对于本次练习的实现影响巨大!
6.0之前,我们还需要在反向代理服务器里实现重写静态资源的URL,以保障浏览器可以正常请求到静态资源,避免一大堆的404错误,掣肘了用户正常使用。6.0之后,我们就不必考虑这麻烦事了,我们可以直接在活字格服务管理器上配置自定义URL前缀,之后,就可以像练习1一样,只需定义你期望的URL前缀是什么,用户的浏览器端所有http请求就都是正常的。
如果非要残忍的说,面对这个场景,6.0之前的格友别折腾了,人生苦短,一大堆又一大堆的复杂配置冷暖自知。6.0之后的格友,恭喜你们,快快喜提这项神奇技能。

下面,我们一起看着视频动手实现:


重点的步骤文字说明:
1. 修改Nginx端的配置文件


  1. upstream hzg {
  2.     server 活字格服务器的域名或者IP:发布应用的端口号; # 比如:xa-hzg.blingblingbling.life:80
  3. }

  4. server {
  5.     listen 80; # 设置Nginx监听的端口
  6.    
  7.     location ^~/自定义多层级的前缀/ {   # 比如:^~/xa/public_app
  8.         proxy_pass http://hzg/;
  9.         # proxy_http_version 1.1; # 若活字格服务器版本低于6.0,需要取消此行注释,使该行配置生效
  10.     }
  11. }
复制代码

2. 修改活字格服务器端的全局配置文件:实现添加应用的反向代理前缀。这部分对应视频理解。


场景3:实现通过多层代理后访问活字格应用
image.png407625426.png
练习这个场景的实现,并不是我们瞎胡闹,纯粹为了炫技,这个练习是有真实案例背书的:
一位格友所在的公司隶属于某个大集团,集团网络安全规定,集团所属的服务器均在集团内网。外网访问某一业务系统时,必须要先通过集团的全局负载均衡器,再把请求通过集团专线转给各分公司负载均衡器,再把请求转给目标服务器

噫,我滴个乖乖啊,咋这么能绕啊,抓狂状!

好呗,还是一起看视频一起实现:


是不是有了场景1与场景2的理解基础,场景3的实现会被我们立马拿下!

重点步骤的文字说明:

1. 首先,我们先调整中间层反向代理端的配置,实现流量的接受与中转。这里以Apache服务器为中间层代理。修改Apache的配置文件:/etc/apache2/sites-available/000-default.conf
  1. <VirtualHost *:9898>
  2.         ServerName xa-apache.blingblingbling.life
  3.         ProxyRequests Off

  4.         <Location "/">
  5.                 ProxyPass http://xa-hzg.blingblingbling.life/
  6.                 ProxyPassReverse http://xa-hzg.blingblingbling.life/
  7.                 Order allow,deny
  8.                 Allow from all
  9.         </Location>
  10. </VirtualHost>
复制代码
注:还有,你定义的虚拟主机的监听端口,需要在Apache服务器的配置文件里注册,否则你会发现Apache端请求不通,这部分视频里展示!

2. 修改Nginx端的配置

  1. upstream apache {
  2.     server apache服务器的域名或者IP:端口 # 比如: xa-apache.blingblingbling.life:8080
  3. }

  4. server {
  5.     listen 80; # 设置Nginx监听的端口
  6.    
  7.     location ^~/xa/public_app/ {
  8.         proxy_pass http://apache/;
  9.         # proxy_http_version 1.1; # 若活字格服务器版本低于6.0,需要取消此行注释,使该行配置生效
  10.     }
  11. }
复制代码

3. 修改活字格服务器端的全局配置文件:实现添加应用的反向代理前缀。此步骤以同场景2的第2步。


总结

使用反向代理,可以让我们分层的去设计整个系统,让咱们的活字格应用拥有 “架构感”,从而为之前的很多问题带来了新的解决思路,比如,访问控制;静态资源加速;高可用保障等。

并且,加持反向代理服务器后,我们从整体的视角再去看我们的使用活字格开发的线上系统,前面的杂事交给反向代理服务器老大哥帮活字格顶住,保障打给活字格服务器的请求都是合法的且合理的,让咱们的活字格专注的提供业务服务。纵使“天塌了”——后台服务全挂了,借助云反向代理服务器依然能够保障我们的系统有所响应,比如返回给用户一些静态的提示信息,让访问者获悉目前的状态,会比无停歇的加载状态,增加系统使用体验的友好度。

因此,当你正好有为活字格服务器加持反向代理的需求,希望本文能够有帮助到你。















0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部