You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带TLS的Nginx反向代理jBPM Business-Central异常排查

解决jBPM通过Nginx反向代理后登录页面空白问题

问题分析

直接访问http://[IP]:8080功能正常,但通过https://my.domain.com登录后页面空白,核心原因是Nginx代理头配置不全,且Wildfly(jBPM底层容器)未正确识别反向代理的请求上下文,导致静态资源加载失败、API请求路径错误或WebSocket连接中断。

修复步骤

1. 修正Nginx站点配置(my.domain.com.conf)

以下是调整后的配置,重点修复了关键问题:

  • 替换中文引号为英文引号(Connection "upgrade")
  • 添加X-Forwarded-Host头,让jBPM识别外部访问域名
  • 调整proxy_pass路径匹配逻辑,避免上下文路径冲突
  • 优化静态资源代理规则
  • 补充WebSocket连接的必要配置
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name my.domain.com;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        return 301 https://$host/business-central/;
    }

    location /business-central/ {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app jbpm;
        set $upstream_port 8080;
        set $upstream_proto http;
        
        # 确保请求上下文完整传递
        proxy_pass $upstream_proto://$upstream_app:$upstream_port$request_uri;
        
        # 核心代理头,让Wildfly识别反向代理来源
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        
        # 禁用压缩避免静态资源解析异常
        proxy_set_header Accept-Encoding "";
        
        # WebSocket支持(修复引号格式问题)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        
        # 延长超时时间避免连接中断
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }

    # 可选:处理jBPM的kie-server上下文(若需使用相关服务)
    location /kie-server/ {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app jbpm;
        set $upstream_port 8080;
        set $upstream_proto http;
        
        proxy_pass $upstream_proto://$upstream_app:$upstream_port$request_uri;
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        
        proxy_http_version 1.1;
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }
}

server {
    listen 80;
    server_name my.domain.com;

    location / {
        return 301 https://$host$request_uri;
    }

    location ~ /.well-known/acme-challenge {
        allow all;
        root /config/www;
    }
}

2. 配置jBPM/Wildfly信任反向代理

需要让Wildfly识别反向代理为可信来源,避免IP和请求路径识别错误,两种实现方式:

方式1:通过Docker Compose添加环境变量

在jbpm服务的environment节点中添加:

- JAVA_OPTS=-Dorg.jboss.as.web.proxy-address-forwarding=true

方式2:挂载自定义Wildfly配置文件

  1. 从运行中的jBPM容器复制默认配置:
docker cp jbpm:/opt/jboss/wildfly/standalone/configuration/standalone.xml ./standalone.xml
  1. 编辑standalone.xml,找到undertow子系统,给http-listener添加proxy-address-forwarding="true":
<subsystem xmlns="urn:jboss:domain:undertow:12.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other">
    <server name="default-server">
        <http-listener name="default" socket-binding="http" proxy-address-forwarding="true"/>
        <!-- 其余配置保持不变 -->
    </server>
    <!-- 其余配置保持不变 -->
</subsystem>
  1. 在Docker Compose的jbpm服务中添加挂载:
volumes:
  - ./standalone.xml:/opt/jboss/wildfly/standalone/configuration/standalone.xml

3. 重启服务

修改配置后,重启所有容器生效:

docker-compose down && docker-compose up -d

验证

访问https://my.domain.com/business-central/,登录后检查浏览器控制台是否存在404/500错误,若无异常则配置生效。

内容的提问来源于stack exchange,提问作者Panagiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:53:11