利用Nginx实现的运用处景
在本文中,将以网关做事器Nginx为例,展示网关做事的四个场景:
跨域访问:让多个运用共享同一个做事器的端口。静态资源:通过微信"大众年夜众平台等验证。IP黑白名单:知足更高的安全防护哀求。访问日志:详细记录并剖析系统相应能力。1.跨域访问:让多个运用共享同一个做事器的同一个端口
将同一个别系的多个模块拆分成多少个运用,不论是开拓管理还是系统运维都是很值得推举的实践模式。但如果一个运用的前端页面须要调用另一个运用的做事端命令时,会碰着跨域访问的问题。为理解决这个问题,我们须要将这些跨运用调用的功能全部挪到做事端命令中:A运用的前端页面调用A运用的做事端命令,在该做事端命令中调用B运用的WebAPI。这种做法平添了开拓A运用做事端命令的事情量,后期掩护时也会有额外的事情和风险。

在编码开拓时,常日是通过网关将所有运用统一到同一个地址和端口中,来避免这种跨域访问的问题。而在低代码开拓中,办理的办法也是一样的。
在做事器上架设一台Nginx做事器,将多个运用作为Nginx的upstream。详细的配置方法如下:
(1) 修正Nginx配置,在http节点下方为管理掌握台和每个运用配置一个upstream节点,包含机器名和端口号。在测试环境中,Nginx安装在运用做事器上,以是这里可以直接用localhost。常规情形下,Nginx须要支配到和运用做事器在同一个局域网内的其余一台做事器上,此时,须要将localhost更换为该做事器的内网IP。
提示:为运用做事器添加upstream而不是直接在location中跳转,可以提升配置文件的可读性。
Nginxupstream us-server{server localhost:22345;}upstream red-server{server localhost:9101;}upstream green-server{server localhost:9102;}
(2)在http→server节点中监听80端口或其他指定的端口号。
Nginxlisten 80;
(3)在http→server节点中,为管理掌握台和每个运用分别配置一个location节点,包含URL的匹配规则和对应的upstream。最常用的规则是从头开始匹配,即^~意味着往后面的字符串开头,如location ^~ /red/匹配到的是所有以/red/开头的location(URL中端口号后面的部分)。
Nginx 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添加到白名单。
Nginx 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抓取。
Nginxlog_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 与资源占用和性能干系。请根据机器配置情形进行适当调度。
如果想理解更多低代码知识,欢迎关注小编~