场景:实现内外网应用访问访问,对于访问的苍穹应用内外网有区分,控制外网只能访问特定苍穹应用
实现方案:使用一个公共域名,对应两个nginx服务(或者一个nginx服务两个不同的端口)。大致原理如下:公网访问苍穹域名解析到nginx1,私网访问苍穹域名解析到nginx2,这样实现内外网访问不同nginx。那么应用隔离又怎么实现呢?可以通过nginx的location请求配置,对获取到的请求header中取http_cqappid(应用ID),对应用ID进行判断,允许需要放行的应用,重定向不允许访问的应用。
技术点:
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;
}
总结:文中只是抽取重点部分,详细可参考文档实现。
金蝶云•苍穹内外网访问部署方案v2.0.docx(1000.28KB)
推荐阅读