在容器上使用 Business Automation Workflow 的逆向代理

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38
容器:
可以在容器上为 IBM® Business Automation Workflow 配置逆向代理。 在容器上的 Business Automation Workflow 前面使用逆向代理时,必须使用外部端点作为主机名后缀。

关于本任务

逆向代理服务器是特殊的 HTTP Server ,用于阻止直接访问内容 HTTP Server。 所有内容请求都将通过公共可见逆向代理服务器的统一资源标识 (URI) ,然后重定向到容器上专用 Business Automation Workflow 的 URI。 逆向代理服务器提供额外的安全层。 它保护网络中的 HTTP ,并提高安全套接字层(SSL)请求的性能。 使用逆向代理时,可能需要更改定制资源 (CR) 参数。
注意 :反向代理仅支持 HTTPS 协议和443默认安全端口配置。

过程

  1. 外部逆向代理端点必须用作容器上独立 Business Automation Workflow 的部署主机名后缀。 将属性 shared_configuration.sc_deployment_hostname_suffix 更新为逆向代理端点的主机名后缀值。
    shared_configuration:
       sc_deployment_hostname_suffix: <namespace>.proxy.external.com 
    
    提示 :要成功路由内部 HTTPS 请求,使用主机名端点格式(如 *-<namespace>.proxy.external.com ),您可以更新云平台 DNS 主机名 IP 地址映射。 此技巧适用于云平台节点和容器中的容器入口控制器上的独立 Business Automation Workflow
  2. 可选: 将定制主机名定义为每个组件的单独外部服务端点。
    
    baw_configuration:
      - name: bawins1
        service_type: "Route" 
        hostname: mybaw-<namespace>.proxy.external.com
    

    如果在已部署的 CR 中将组件主机名的字段值保留为 NULL 或空,那么工作流程操作程序将设置缺省值。

    baw-bawins1-<namespace>.proxy.external.com
         cmis-<namespace>.proxy.external.com
         cpe-<namespace>.proxy.external.com
         cpe-stless-<namespace>.proxy.external.com
         graphql-<namespace>.proxy.external.com
         navigator-<namespace>.proxy.external.com
         rr-<namespace>.proxy.external.com
         ums-profiles-<namespace>.proxy.external.com
         ums-scim-<namespace>.proxy.external.com
         ums-sso-<namespace>.proxy.external.com
         ums-teams-<namespace>.proxy.external.com
         ae-workspace-<namespace>.proxy.external.com
         ums-<namespace>.proxy.external.com
         pfs-<namespace>.proxy.external.com
         ………
    
    您可以使用命令 kubectl get route -n <workflow namespace> 来查看服务外部主机名值
  3. 获取每个组件服务的路由主机名后,请确保为每个外部客户机配置到逆向代理服务器的 DNS 映射。 然后,每个客户机都可以使用相同的路由主机名端点来访问逆向代理服务器。
    <Reverse Proxy IP Address>        baw-bawins1-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        cmis-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        cpe-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        cpe-stless-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        graphql-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        navigator-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        rr-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        ums-profiles-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        ums-scim-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        ums-sso-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        ums-teams-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        ae-workspace-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        ums-<namespace>.proxy.external.com
    <Reverse Proxy IP Address>        pfs-<namespace>.proxy.external.com
    
    在此示例中, <Reverse Proxy IP Address> 是外部逆向代理服务器 IP 地址,并且组件服务主机名与工作流程部署上的端点路由相同。 要查看组件服务主机名,请使用 kubectl get route -n <your namespace> 命令。
  4. 配置反向代理,将外部客户端HTTPS 请求传递到其后端云平台入口控制器。 配置 HTTPS 上游转发,如下例所示,使用 Nginx。
    server {
    ……………
    location / {
    ………..
            rewrite ^ $request_uri;
            rewrite ^/(.*) $1 break;
                proxy_pass https://baw-server/$uri;
    ………….. }
    ……}
    upstream baw-server {
          server <cloud platform ingress controller IP Address>:443;
          …..
    }
               …….
    
  5. 配置逆向代理以从外部客户机传递头。 设置主机头值并将请求转发到后端工作流程系统,如以下使用 Nginx的示例中所示。 否则,外部客户机浏览器页面将显示 application not found 错误。
    proxy_set_header Host $host;
    重要信息: 请注意逆向代理的以下注意事项:
    • 传递来自请求的头。

      否则,由于缺少头而导致认证重定向失败,并显示异常。 系统尝试使用URL 重新创建标题。 此尝试失败,因为端点在外部未知且未在 UMS 中注册。

      CWOAU0073E: An authentication error occurred.Try closing the web browser and authenticating again, or contact the site administrator if the problem persists.
    • 如果从工作流程 Swagger UI 上载文件或安装工作流程应用程序时文件大小较大,那么可能会看到错误。
      413 Request Entity Too Large
      工作流程应用程序安装的包大小大于将文件上载到逆向代理所允许的大小。 要更正此问题,可以设置较大的值以在逆向代理服务器中上载文件大小限制。
      client_max_body_size 100M 
    • 请勿覆盖标题上的引用。

      否则, UMS 和 Business Automation Workflow 无法正确装入工件,并引发异常。 此安全性问题会阻止内部 Web 应用程序防火墙的工件。

      Cross-Site Request Forgery (CSRF) protection: unacceptable REFERER header: https:\/\/ums-sso-baw-prod.xxxxx\/ums\/login. Expected: host ums-sso-baw-prod.yyyyy and port 443
    • 请勿激活压缩。

      IBM Business Automation NavigatorIBM Administration Console for Content Platform Engine (ACCE) 不受支持。 由于路径上的错误,某些工件无法正确装入。