金蝶云·苍穹内外网访问部署方案
1 需求
客户需要内外网同时访问苍穹,内网需通过内网地址访问,外网使用外网地址访问。然而,集群配置中的domain地址只能填写一个,无法兼顾上述两种不同的地址访问苍穹(clientDomain方案除外)
1.1 场景一:内外网-访问隔离
实现内外网访问,对于访问的苍穹的应用不区分内外网
1.2 场景二:内外网-应用访问隔离
实现内外网应用访问访问,对于访问的苍穹应用内外网有区分,控制外网只能访问特定苍穹应用
1.3 场景三:内外网-PC移动端访问隔离
实现内外网PC与移动端访问隔离,对于访问的苍穹应用内外网有区分,控制外网只能移动端访问,而PC只能在内网访问。
针对上述三种场景,制定如下解决方案,这些解决方案都需要内外网配置相同的域名
1、外网ip配置域名(购买域名解析公网入口IP)
2、内网ip配置相同的域名(内网域名服务器解析内网入口IP)
2 解决方案
2.1 场景一:内外网-访问隔离
2.1.1 方案描述
通过内外网配置相同域名,如下图示例
2.1.2 操作步骤
(1)外网IP配置域名
需客户购买域名,用于苍穹访问,绑定外部访问的反向代理服务地址
(2)内网IP配置域名
配置内部域名服务器,将访问苍穹域名解析成内网nginx的地址(需自备域名服务器)
(3)配置
MC的集群管理中,配置项domain.contextUrl与imageServer.external.url中的ip为该域名,保存后发布zk
2.2 场景一:内外网-应用访问隔离
2.1.1 方案描述
通过内外网配置相同域名,并通过api网关或nginx实现需要对外放开的功能应用(appid)访问,如下图示例
2.2.2 操作步骤
(1)外网IP配置域名
需客户购买域名,用于苍穹访问,绑定外部访问的反向代理服务地址
(2)内网IP配置域名
配置内部域名服务器,将访问苍穹域名解析成内网nginx的地址(需自备域名服务器)
(3)配置
MC的集群管理中,配置项domain.contextUrl与imageServer.external.url中的ip为该域名,保存后发布zk
(4)外网Nginx配置方法
图:Nginx实现苍穹应用级内外网隔离示意图
Nginx实现苍穹应用级内外网隔离原理是通过获取header中cqappid的值进行判断重定向,配置段参考如下:
location = /guide.json { root html; #引导页面放置nginx/html/目录下 } location = /guide.html { root html; #引导页面放置nginx/html/目录下 } location ~(/ierp/.*\.(do|jsp)$)|(/ierp/(kapi|kdctlres|attachment|excelpreview|kws|cbs|monitor)/)|(/ierp/?$)|(/ierp/(index\.html|mobile\.html|login\.html|login-mobile\.html)$)|(monitor)/ { #苍穹应用隔离 set $payvar 1; #先禁用所有 if ($http_cqappid = "bos") {set $payvar '0';} #放出bos平台应用访问 if ($http_cqappid = "") {set $payvar '0';} #cqappid为空时允许,即放出静态资源 if ($http_cqappid ~* "(tra|exp|er)") {set $payvar '0';} #放出tra、exp、er应用访问 # 禁用卡片功能(比如放出bos范围太大了,需要再细化限制) if ($request_uri ~* "f=bos_base_apphome") {set $payvar '1';} #禁用系统服务云的基础服务 if ($request_uri ~* "f=sys_apphome_grid") {set $payvar '1';} #禁用系统服务云的系统管理 if ($request_uri ~* "f=cts_apphome_grid") {set $payvar '1';} #禁用系统服务云的配置工具 if ($request_uri ~* "f=ais_apphome") {set $payvar '1';} #禁用系统服务云的智能搜索 if ($request_uri ~* "f=pc_devportal_main") {set $payvar '1';} #禁用开发服务云的开发平台 if ($request_uri ~* "f=open_apphome_grid") {set $payvar '1';} #禁用开发服务云的开放平台 if ($request_uri ~* "f=unit_apphome_grid") {set $payvar '1';} #禁用开发服务云的测试平台 if ($payvar = 1) { rewrite ^(.*)$ http://www.myierp.com/guide.json redirect; #重定向到苍穹要调用的json接口,改接口内容返回重定向的引导页面 } pass_pass http://next-ierp; …… }
重定向的guide.json文件内容如下:(再由guide.html定义自己的引导页面即可)
{ "RedirectURL":"http://www.myierp.com/guide.html" }
自定义guide.html引导页面内容如下:
<!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <title>金蝶云苍穹</title> </head> <body> <h1> Access denied </h1> <p>抱歉!您所在的网络环境没有权限打开此应用,请联系管理员。 <p>Sorry! Your network environment doesn't have permission to open this application. Please contact the administrator. <p><div style="color:#777777;font-size:10px"> Kingdee/api-gateway</div> </body> </html>
2.3 场景三:内外网-PC与移动端访问隔离
2.3.1 方案描述
通过内外网配置相同域名,拦截外网PC端访问的浏览器标识以及登录页面login-mobile.html、login.html,如下图示例
2.3.2 操作步骤
(1)外网IP配置域名
需客户购买域名,用于苍穹访问,绑定外部访问的反向代理服务地址
(2)内网IP配置域名
配置内部域名服务器,将访问苍穹域名解析成内网nginx的地址(需自备域名服务器)
(3)配置
MC的集群管理中,配置项domain.contextUrl与imageServer.external.url中的ip为该域名,保存后发布zk
(4)外网Nginx配置方法,参考配置如下:
# 苍穹动态请求跳转到引导页面 location = /guide.json { root html; } # 引导页面 location = /guide.html { root html; } # 后端请求配置 location ~(/ierp/.*\.(do|jsp)$)|(/ierp/(kapi|kdctlres|attachment|excelpreview|kws|cbs|monitor)/)|(/ierp/?$)|(/ierp/(index\.html|mobile\.html|login\.html|login-mobile\.html)$)|(monitor)/ { #pc和移动端隔离 set $payvar '1'; #先禁用所有 if ($request_uri ~* "/ierp/mobile.html") {set $payvar '0';} #放出移动端的访问 if ($http_referer ~* "/ierp/mobile.html") {set $payvar '0';} #放出移动端的访问 if ($http_user_agent ~* "Qing/") {set $payvar '0';} #移动端轻应用的访问 if ($request_uri ~* "/ierp/attachment/") {set $payvar '0';} #放出附件下载和预览 if ($request_uri ~* "/ierp/image/") {set $payvar '0';} #放出图片预览 #if ($request_uri ~* "/ierp/login-mobile.html") {set $payvar '0';} #移动端登录页(正常移动端是不需要登录的) #if ($http_referer ~* "/ierp/login-mobile.html") {set $payvar '0';} #移动端登录页(正常移动端是不需要登录的) if ($payvar = 1) { rewrite ^(.*)$ http://www.myierp.com/guide.json redirect; } proxy_pass http://next-ierp; ..... }
2.4 扩展场景:移动端所有应用+PC端部分应用控制访问
移动端放出所有外网访问,但同时部分应用PC端也要能访问。参考配置如下:
# 苍穹动态请求跳转到引导页面 location = /guide.json { root html; } # 引导页面 location = /guide.html { root html; } # 后端请求配置 location ~(/ierp/.*\.(do|jsp)$)|(/ierp/(kapi|kdctlres|attachment|excelpreview|kws|cbs|monitor)/)|(/ierp/?$)|(/ierp/(index\.html|mobile\.html|login\.html|login-mobile\.html)$)|(monitor)/ { #api网关功能 set $payvar '1'; #先禁用所有 if ($http_cqappid = "bos") {set $payvar '0';} #放出bos平台应用访问 if ($http_cqappid = "") {set $payvar '0';} #cqappid为空时允许,即放出静态资源访问 if ($http_cqappid ~* "(tra|exp)") {set $payvar '0';} #放出tra和exp应用访问,如需放出其他应用,用|分隔开来即可 if ($http_referer ~* "/ierp/mobile.html") {set $payvar '0';} #如果是移动端则全部访问 if ($http_user_agent ~* "Qing/") {set $payvar '0';} #移动端轻应用的访问 if ($payvar = 1) { rewrite ^(.*)$ http://www.myierp.com/guide.json redirect; } proxy_pass http://next-ierp; ..... }
2.5 扩展场景:移动端部分应用+PC端部分应用控制访问
移动端放出部分应用外网访问,但同时部分应用PC端也要能访问。参考配置如下:
# 苍穹动态请求跳转到引导页面 location = /guide.json { root html; } # 引导页面 location = /guide.html { root html; } # 后端请求配置 location ~(\.(do|jsp)$)|(/ierp/(kapi|kdctlres|attachment|excelpreview|kws|cbs|monitor)/)|(/ierp/?$)|(/ierp/(index\.html|mobile\.html|login\.html|login-mobile\.html)$)|(monitor)/ { #api网关功能 set $payvar_p '1'; #先禁用所有 set $payvar_m 'a'; #先禁用所有 if ($http_cqappid = "bos") {set $payvar_p "0";set $payvar_m "b";} #放出bos平台应用访问 if ($http_cqappid = "") {set $payvar_p "0";set $payvar_m "b";} #cqappid为空时允许,即放出pc端静态资源访问 if ($http_cqappid ~* "(tra|exp)") {set $payvar_p "0";set $payvar_m "b";} #放出tra和exp应用访问,如需放出其他应用,用|分隔开来即可 if ($http_referer ~* "/ierp/mobile.html") {set $payvar_m "b";} #放出移动端访问 if ($http_user_agent ~* "Qing/") {set $payvar_m "b";} #移动端轻应用的访问 set $payvar_a ${payvar_p}${payvar_m}; #取pc+移动端的并集 if ($payvar_a != 0b) { rewrite ^(.*)$ http://www.myierp.com/guide.json redirect; } proxy_pass http://next-ierp; ..... }
金蝶云·苍穹内外网访问部署方案
本文2024-09-23 01:12:45发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144492.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf