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

WebSphere虚拟主机拆分及同上下文根多JVM路由配置方法

嘿,这个需求完全可以实现,我给你一步步拆解配置过程,都是基于你现有单IP单IHS的环境来的:

配置步骤详解

先搞定IBM HTTP Server(IHS)的SSL虚拟主机

打开IHS的主配置文件httpd.conf(或者你单独维护的vhosts.conf,记得用Include把它引入到主配置里),添加下面的虚拟主机配置——每个子域名对应一个独立的<VirtualHost>块,都监听443端口(因为是单IP,IHS会根据请求的Host头区分不同站点):

# 先确保必要的模块已经启用(没启用的话加上)
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
LoadModule was_ap24_module modules/mod_was_ap24_http.so

# 全局SSL基础配置(如果还没加的话)
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

# app1.mydomain.com 对应的虚拟主机
<VirtualHost *:443>
    ServerName app1.mydomain.com
    SSLEnable
    # 替换成你自己的SSL证书路径,要是用通配符证书的话,三个虚拟主机可以共用一套
    SSLCertificateFile "C:/Program Files/IBM/HTTPServer/conf/certs/mydomain_wildcard.crt"
    SSLCertificateKeyFile "C:/Program Files/IBM/HTTPServer/conf/certs/mydomain_wildcard.key"
    SSLCertificateChainFile "C:/Program Files/IBM/HTTPServer/conf/certs/root_ca.crt"

    # 把/myapp路径的请求转发给WebSphere插件处理
    <Location /myapp>
        SetHandler was_handler
        WebSpherePluginConfig "C:/Program Files/IBM/HTTPServer/conf/plugin-cfg.xml"
    </Location>
</VirtualHost>

# app2.mydomain.com 对应的虚拟主机
<VirtualHost *:443>
    ServerName app2.mydomain.com
    SSLEnable
    # 通配符证书的话直接复用上面的路径就行
    SSLCertificateFile "C:/Program Files/IBM/HTTPServer/conf/certs/mydomain_wildcard.crt"
    SSLCertificateKeyFile "C:/Program Files/IBM/HTTPServer/conf/certs/mydomain_wildcard.key"
    SSLCertificateChainFile "C:/Program Files/IBM/HTTPServer/conf/certs/root_ca.crt"

    <Location /myapp>
        SetHandler was_handler
        WebSpherePluginConfig "C:/Program Files/IBM/HTTPServer/conf/plugin-cfg.xml"
    </Location>
</VirtualHost>

# app3.mydomain.com 对应的虚拟主机
<VirtualHost *:443>
    ServerName app3.mydomain.com
    SSLEnable
    SSLCertificateFile "C:/Program Files/IBM/HTTPServer/conf/certs/mydomain_wildcard.crt"
    SSLCertificateKeyFile "C:/Program Files/IBM/HTTPServer/conf/certs/mydomain_wildcard.key"
    SSLCertificateChainFile "C:/Program Files/IBM/HTTPServer/conf/certs/root_ca.crt"

    <Location /myapp>
        SetHandler was_handler
        WebSpherePluginConfig "C:/Program Files/IBM/HTTPServer/conf/plugin-cfg.xml"
    </Location>
</VirtualHost>

接着在WebSphere控制台配置主机头路由规则

  1. 登录WebSphere 9.0的管理控制台,先去服务器 > 服务器类型 > WebSphere应用服务器,找到你的三个JVM:app1、app2、app3。
  2. 逐个点进去,进入Web容器设置 > Web容器,再点虚拟主机——确保每个服务器对应的虚拟主机(比如默认的default_host)已经添加了对应子域名的主机别名:
    • 跳转到环境 > 虚拟主机,选中default_host,点击主机别名,添加三个条目:app1.mydomain.com:9080、app2.mydomain.com:9081、app3.mydomain.com:9082。
  3. 再确认下每个JVM的HTTP端口:进入对应服务器的HTTP传输,确保app1是9080,app2是9081,app3是9082,没错就行。
  4. 最后检查下应用的上下文根:去应用程序 > WebSphere企业应用程序,找到每个JVM上的myapp,确认上下文根都是/myapp。

生成并调整WebSphere插件配置文件

  1. 在WebSphere控制台,进入服务器 > 服务器类型 > WebSphere应用服务器 > [对应服务器] > Web服务器插件,点击生成插件。
  2. 生成好的plugin-cfg.xml文件,复制到IHS的conf目录下(就是刚才IHS配置里指定的路径)。
  3. 关键一步:手动编辑plugin-cfg.xml,添加基于主机头的路由规则,让不同Host头的请求转发到对应JVM。你可以参考下面的配置片段:
<!-- 为每个JVM的/myapp路径创建UriGroup -->
<UriGroup Name="app1_URIs">
    <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/myapp/*"/>
</UriGroup>
<UriGroup Name="app2_URIs">
    <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/myapp/*"/>
</UriGroup>
<UriGroup Name="app3_URIs">
    <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/myapp/*"/>
</UriGroup>

<!-- 把每个UriGroup和对应的服务器集群、虚拟主机组绑定 -->
<Route ServerCluster="app1_Cluster" UriGroup="app1_URIs" VirtualHostGroup="app1_VHosts"/>
<Route ServerCluster="app2_Cluster" UriGroup="app2_URIs" VirtualHostGroup="app2_VHosts"/>
<Route ServerCluster="app3_Cluster" UriGroup="app3_URIs" VirtualHostGroup="app3_VHosts"/>

<!-- 为每个子域名创建虚拟主机组 -->
<VirtualHostGroup Name="app1_VHosts">
    <VirtualHost Name="app1.mydomain.com"/>
</VirtualHostGroup>
<VirtualHostGroup Name="app2_VHosts">
    <VirtualHost Name="app2.mydomain.com"/>
</VirtualHostGroup>
<VirtualHostGroup Name="app3_VHosts">
    <VirtualHost Name="app3.mydomain.com"/>
</VirtualHostGroup>

提示:这里的app1_Cluster要对应你WebSphere里包含app1 JVM的服务器集群,如果每个JVM是独立的服务器,也可以直接用服务器名称代替集群名,不过用集群更规范。


最后验证配置是否生效

  1. 重启IHS服务:在Windows 2016的服务列表里找到IBM HTTP Server 9.0,右键重启。
  2. 重启WebSphere的三个JVM服务器。
  3. 测试访问:分别打开https://app1.mydomain.com/myapp、https://app2.mydomain.com/myapp、https://app3.mydomain.com/myapp,确认每个地址都跳转到对应JVM上的应用。

如果遇到问题,先看IHS的logs/error.log和WebSphere插件的logs/plugin.log,大部分错误都能从日志里找到原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:47:04