苍穹内外网访问以及应用隔离部署方案原创
金蝶云社区-吴辉宇
吴辉宇
6人赞赏了该文章 1588次浏览 未经作者许可,禁止转载编辑于2021年01月08日 09:38:27

场景:实现内外网应用访问访问,对于访问的苍穹应用内外网有区分,控制外网只能访问特定苍穹应用


实现方案:使用一个公共域名,对应两个nginx服务(或者一个nginx服务两个不同的端口)。大致原理如下:公网访问苍穹域名解析到nginx1,私网访问苍穹域名解析到nginx2,这样实现内外网访问不同nginx。那么应用隔离又怎么实现呢?可以通过nginx的location请求配置,对获取到的请求header中取http_cqappid(应用ID),对应用ID进行判断,允许需要放行的应用,重定向不允许访问的应用。

图片.png

技术点:

1.公网域名:直接购买,联系提供方协助将域名绑定外部访问的反向代理服务地址

2.私网域名:需用户自备域名服务器,配置内部域名服务器解析域名到内网nginx地址

3.nginx的location配置:例如应用id为dmp只允许内网访问。那么需要对绑定公网的nginx进行拦截配置。苍穹的配置文件为ierp.conf,具体文件名可在nginx的配置文件目录下查找,其中部分逻辑如下:

if($http_cqappid == "dmp" ) {  #在公网访问只允许私网访问的应用,重定向该请求,提示无权限访问。

    set $payvar '1';

}

if($http_cqappid == "") {  #允许静态资源的访问

    set $payvar '0';

}

if($payvar == "1") {  #对payvar进行判断,为1表示不允许访问

    rewrite ^(.*)$ http地址 redirect;

}


总结:文中只是抽取重点部分,详细可参考文档实现。


赞 6