摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

在典型的系统部署架构中,应用服务器是一种软件或硬件系统,它承载着应用程序的核心逻辑。它接收客户端的请求并处理相应的业务逻辑、数据操作等任务。应用服务器通常被用于支持 Web 应用程序、移动应用程序和企业应用程序等。在应用服务器之上通常是网关服务器,在其下方是数据库服务。有趣的是,在低代码平台中,同样也存在应用服务器,今天小编将以葡萄城公司的企业级低代码开发平台——活字格为例给大家介绍网关服务器对于低代码平台的辅助作用。

使用Nginx实现的应用场景

在本文中,将以网关服务器Nginx为例,展示网关服务的四个场景:

  1. 跨域访问:让多个应用共享同一个服务器的端口。
  2. 静态资源:通过微信公众平台等验证。
  3. IP黑白名单:满足更高的安全防护要求。
  4. 访问日志:详细记录并分析系统响应能力。

1.跨域访问:让多个应用共享同一个服务器的同一个端口

将同一个系统的多个模块拆分成若干个应用,不论是开发管理还是系统运维都是很值得推荐的实践模式。但如果一个应用的前端页面需要调用另一个应用的服务端命令时,会遇到跨域访问的问题。为了解决这个问题,我们需要将这些跨应用调用的功能全部挪到服务端命令中:A应用的前端页面调用A应用的服务端命令,在该服务端命令中调用B应用的WebAPI。这种做法平添了开发A应用服务端命令的工作量,后期维护时也会有额外的工作和风险。

在编码开发时,通常是通过网关将所有应用统一到同一个地址和端口中,来避免这种跨域访问的问题。而在低代码开发中,解决的方式也是一样的。

在服务器上架设一台Nginx服务器,将多个应用作为Nginx的upstream。具体的配置方法如下:

(1) 修改Nginx配置,在http节点下方为管理控制台和每个应用配置一个upstream节点,包含机器名和端口号。在测试环境中,Nginx安装在应用服务器上,所以这里可以直接用localhost。常规情况下,Nginx需要部署到和应用服务器在同一个局域网内的另外一台服务器上,此时,需要将localhost替换为该服务器的内网IP。

提示:为应用服务器添加upstream而不是直接在location中跳转,可以提升配置文件的可读性。

upstream us-server{
server localhost:22345;
} upstream red-server{
server localhost:9101;
} upstream green-server{
server localhost:9102;
}

(2)在http→server节点中监听80端口或其他指定的端口号。

listen    80;

(3)在http→server节点中,为管理控制台和每个应用分别配置一个location节点,包含URL的匹配规则和对应的upstream。最常用的规则是从头开始匹配,即^~意味着以后面的字符串开头,如location ^~ /red/匹配到的是所有以/red/开头的location(URL中端口号后面的部分)。

 location ^~ /UserService/ {
proxy_pass http://us-server/UserService/;
proxy_redirect default;
} location ^~ /red/ {
proxy_pass http://red-server/red/;
proxy_redirect default;
} location ^~ /green/ {
proxy_pass http://green-server/green/;
proxy_redirect default;
}

(4)在活字格管理控制台上,将应用的“域名”(应用管理→应用→常规设置→设置域名)修改为Nginx监听的端口,确保页面的外部导航正常运行。应用的配置中,需要包含应用名。

管理控制台的“域名”也需要设置(设置→安全设置→设置管理控制台站点的域名),控制台的配置不包含应用名。

扩展场景:

如果您的IT安全策略要求只能开放80/443端口,但需要访问到多个应用时,也可以用这个方案,实现端口统一化。

2.静态资源:通过微信公众平台等验证

在对接微信公众平台等第三方系统时,对方通常会提出基于文件的域名验证机制,如微信公众平台的JS接口域名验证需要将特定文件放到域名的根目录。

此时,可以使用网关的静态资源服务器能力,完成验证工作。

在【1.跨域访问】的基础上继续配置Nginx文件,具体的操作方法如下:

(1):在域名管理的界面上,通过ICP备案的域名指向Nginx服务器的外网地址。

(2):将需要对外提供访问的静态文件存放到Nginx服务器上Nginx静态资源根目录中,如/etc/Nginx/html(安装方式和版本不同,根目录还可能是/usr/share/Nginx/html或/var/www/html,默认情况下,Nginx根目录中有index.html和50x.html两个文件)。Nginx将根目录中的文件以Web静态资源的形式提供给外部使用。具体而言就是接收到URL为 /xxx.yyy 的请求时,将根目录中的xxx.yyy文件内容作为响应来返回。

3.IP黑白名单:满足更高的安全防护要求

对于一些高安全要求的应用场景,通常会要求做黑白名单,如仅允许特定的IP访问、或不允许某个特定的IP访问。这些工作推荐在网关上执行,将风险拦截在应用服务器之外。

因为活字格内置的管理控制台中包含了应用管理、用户角色管理等敏感操作,很多企业要求为该应用启用白名单控制,仅允许公司IT运维团队专用的IP地址访问。接下来,我们在【二、跨域访问】的基础上继续完善Nginx配置来实现白名单。具体的操作方法如下:

修改Nginx配置中http→server节点中找到管理控制台对应的location,在下面追加以下内容,将内网的10.32.209.252和外网的113.132.178.118添加到白名单。

 location ^~ /UserService/ {
proxy_pass http://us-server/UserService/;
proxy_redirect default;
allow 10.32.209.252;
allow 113.132.178.118;
deny all;
}

重要提示:

网关层面的白名单层次高于系统防火墙,两者不是取代关系。您依然需要使用防火墙的策略来避免暴露不必要的端口,以降低安全风险。

4.访问日志:详细记录并分析系统响应能力

当需要评估系统的响应性能、可用性等参数,寻找改进方向时,您需要通过第三方来记录应用的访问日志,然后将其接入主流的日志处理和分析工具链(日志分析是一个“高技术含量”的领域,已经有成熟的方案,如ELK)进行后续处理。

好消息是,Nginx内置了日志机制,只需要做非常简单的配置,就可以得到想要的日志,然后再按照ELK的帮助文档,就能搞定自己的日志分析平台了。继续在【3.IP黑白名单】的基础上继续完善Nginx配置和日志配置。具体的操作方法如下:

(1):修改Nginx配置中http节点,添加一个名为json的日志模板,便于filebeats抓取。

log_format json escape=json '{"time_local": "$time_local", '
'"remote_addr": "$remote_addr", '
'"request_uri": "$request_uri", '
'"status": $status, '
'"upstream_time": "$upstream_response_time"}';

(2):修改http→server节点,追加访问日志的配置,指定文件路径和刚才定义的名为json的模板access_log /var/log/Nginx/access.log json;

常用的日志项目和参数如下所示:

总结

本文中用到的配置文件如附件链接,采用了最简单的配置方式。其中,worker_processes 和 worker_connections 与资源占用和性能相关。请根据机器配置情况进行适当调整。

附件链接(Nginx.conf):https://gcdn.grapecity.com.cn/forum.phpmod=attachment&aid=MjkzOTY0fGEwYWYyMWE4fDE2OTUxODg0NjZ8ODE2MDZ8MTg2NjYy

扩展链接:

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发

低代码平台如何借助Nginx实现网关服务的更多相关文章

  1. 低代码平台--基于surging开发微服务编排流程引擎构思

    前言 微服务对于各位并不陌生,在互联网浪潮下不是在学习微服务的路上,就是在使用改造的路上,每个人对于微服务都有自己理解,有用k8s 就说自己是微服务,有用一些第三方框架spring cloud, du ...

  2. 基于低代码平台(Low Code Platform)开发中小企业信息化项目

    前言:中小企业信息化需求强烈,对于开发中小企业信息化项目的软件工作和程序员来说,如何根据中小企业的特点,快速理解其信息化项目的需求并及时交付项目,是一个值得关注和研讨的话题. 最近几年来,随着全球经济 ...

  3. 干货!可以使用低代码平台代替Excel吗?

    低代码开发平台可以代替Excel?不用惊讶,答案是肯定的,而且,低代码开发平台可以完全代替Excel.例如Zoho Creator低代码平台,可以围绕数据存储.管理和创建工作流程.期间不需要IT人员介 ...

  4. 2021年哪个低代码平台更值得关注?T媒体盘点国内主流低代码厂商

    2020年圣诞前夜,国内知名创投科技媒体T媒体旗下的T研究发布了2020中国低代码平台指数测评报告.报告除了对国内低代码行业现状进行总结外,还对主流低代码厂商的市场渗透和曝光进行测评. 报告认为,低代 ...

  5. 分析师机构发布中国低代码平台现状分析报告,华为云AppCube为数字化转型加码

    摘要:Forrester指出,中国企业数字化转型过程中,有58%的决策者正在采用低代码工具进行软件构建,另有16%的决策者计划采用低代码. 华为消息,知名研究与分析机构Forrester Resear ...

  6. 使用WtmPlus低代码平台提高生产力

    低代码平台的概念很火爆,产品也是鱼龙混杂. 对于开发人员来说,在使用绝大部分低代码平台的时候都会遇到一个致命的问题:我在上面做的项目无法得到源码,完全黑盒.一旦我的需求平台满足不了,那就是无解.   ...

  7. OpenDataV低代码平台增加自定义属性编辑

    上一篇我们讲到了怎么在OpenDataV中添加自己的组件,为了让大家更快的上手我们的平台,这一次针对自定义属性编辑,我们再来加一篇说明.我们先来看一下OpenDataV中的属性编辑功能. 当我们拖动一 ...

  8. vivo 低代码平台【后羿】的探索与实践

    作者:vivo 互联网前端团队- Wang Ning 本文根据王宁老师在"2022 vivo开发者大会"现场演讲内容整理而成.公众号回复[2022 VDC]获取互联网技术分会场议题 ...

  9. vivo 游戏中心低代码平台的提效秘诀

    作者:vivo 互联网服务器团队- Chen Wenyang 本文根据陈文洋老师在"2022 vivo开发者大会"现场演讲内容整理而成.公众号回复[2022 VDC]获取互联网技术 ...

  10. 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端

    前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...

随机推荐

  1. To ChatGPT:让你更加随意地使用所有ChatGPT应用

    现在其实已经有很多在线的llm服务了,当然也存在许多开源部署方案,但是不知道大家有没有发现一个问题,目前基于ChatGPT开发的应用,都是使用的OpenAI的接口.换句话说,如果没有OpenAI账号, ...

  2. SparkMLlib机器学习实践:基于聚类的社交媒体分析

    目录 <Spark MLlib 机器学习实践:基于聚类的社交媒体分析> 一.引言 社交媒体作为现代营销的一种重要手段,已经被广泛应用于市场调研.品牌监控.内容分析.用户互动等领域.在这个领 ...

  3. .NET周报 【7月第1期 2023-07-02】

    国内文章 C# 实现 Linux 视频聊天.远程桌面(源码,支持信创国产化环境,银河麒麟,统信UOS) https://www.cnblogs.com/shawshank/p/17420469.htm ...

  4. Python史上最全种类数据库操作方法,你能想到的数据库类型都在里面!甚至还有云数据库!

    本文将详细探讨如何在Python中连接全种类数据库以及实现相应的CRUD(创建,读取,更新,删除)操作.我们将逐一解析连接MySQL,SQL Server,Oracle,PostgreSQL,Mong ...

  5. spring-boot-plus2.7.12版本重磅发布,三年磨一剑,兄弟们等久了,感谢你们的陪伴

    Everyone can develop projects independently, quickly and efficiently! spring-boot-plus是一套集成spring bo ...

  6. ZEGO即构科技荣获36氪【WISE2020中国新经济之王最具影响力企业】

    12月8-10日,36氪重磅新经济峰会WISE2020新经济之王大会将在北京举办.近日,2020新经济之王--中国最具影响力企业榜单陆续发布,全球云通讯服务商即构科技,凭借在企业服务领域硬核出色的技术 ...

  7. 「学习笔记」FHQ-treap

    FHQ-treap,即无旋 treap,又称分裂合并 treap,支持维护序列,可持久化等特性. FHQ-treap 有两个核心操作,分裂 与 合并.通过这两个操作,在很多情况下可以比旋转 treap ...

  8. zabbix 可计算监控项使用 last() 与 avg() 的区别

    使用zabbix的可计算监控项时遇到的问题 在agent异常退出的情况下,使用last()的监控项依然在产出数据! 分析解决 last()函数会跳过空值,取最后一个有效值计算.遍查文档,只有用avg( ...

  9. HTML超文本标记语言2

    二.基本标签 1.文件标签(结构) <html> 根标签 <head> <title>页面标题(标签)</title> </head> &l ...

  10. 奇分频电路如何实现? 负沿触发&非负沿触发

    请设计一个奇分频电路,占空比为50%? 以下给出解答: 1.带负沿触发 module div //带负沿触发 #(parameter N = 5) //定义分频参数 ( input sys_clk , ...