能否将Oracle HTTP Server作为OpenShift Route的代理?配置求助
问题描述
我们拥有OAM、OIG和SOA等Oracle产品,目前通过OpenShift Route对外访问,Route URL可正常访问。现需要在OAM等产品前部署Oracle HTTP Server(OHS)作为代理,期望架构为:浏览器→OHS→Route→OpenShift上的OAM Pods。
已安装OHS并配置如下:
<VirtualHost xx.xx.xx.xx:xxxx> ServerName http://xx.xx.xx.xx:xxxx ServerAdmin you@your.address RewriteEngine On RewriteOptions inherit UseCanonicalName On RequestHeader set "X-Forwarded-Host" "xx.xx.xx.xx:xxxx" LimitRequestFieldSize 655362 LoadModule weblogic_module "${PRODUCT_HOME}/modules/mod_wl_ohs.so" <IfModule weblogic_module> #OAM Entries <Location /console> WLSRequest ON DynamicServerList OFF WLCookieName OAMJSESSIONID WebLogicCluster xxxxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:80 </Location> </IfModule> </VirtualHost>
配置后出现Web Server桥接失败错误:
Failure of Web Server bridge- No backend server available for connection: timed out after 10 seconds or idempotent set to OFF or method not idempotent。
现咨询:
- OHS能否作为Route URL的代理?
- 若可以,正确配置方法是什么?
解决方案
1. OHS完全可以作为OpenShift Route的代理
你的架构(浏览器→OHS→Route→OAM Pods)是可行的,不存在技术障碍。当前报错是因为配置思路错误:你使用的mod_wl_ohs模块是用来直接连接WebLogic Server集群的,但现在需要代理的是OpenShift Route暴露的HTTP/HTTPS地址,应该改用OHS的反向代理模块mod_proxy系列,而非WebLogic专属的桥接模块。
2. 正确配置步骤
步骤1:启用必要的代理模块
打开OHS的主配置文件(如httpd.conf或ohs.conf),确保加载以下模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so # 如果你的Route是HTTPS协议,还需添加以下两个模块: LoadModule ssl_module modules/mod_ssl.so LoadModule proxy_ssl_module modules/mod_proxy_ssl.so
步骤2:修改VirtualHost配置
替换原有的mod_wl_ohs相关配置,改用反向代理配置,示例如下:
<VirtualHost xx.xx.xx.xx:xxxx> ServerName xx.xx.xx.xx:xxxx # 注意不要加http://,仅保留主机+端口 ServerAdmin you@your.address RewriteEngine On RewriteOptions inherit UseCanonicalName On # 传递客户端真实请求信息给后端服务 RequestHeader set "X-Forwarded-Host" "%{HTTP_HOST}e" env=HTTP_HOST RequestHeader set "X-Forwarded-Proto" "%{REQUEST_SCHEME}e" env=REQUEST_SCHEME RequestHeader set "X-Forwarded-For" "%{REMOTE_ADDR}e" env=REMOTE_ADDR LimitRequestFieldSize 65536 # 核心反向代理配置 ProxyRequests Off # 关闭正向代理,仅启用反向代理模式 ProxyPreserveHost On # 保留客户端请求的Host头,确保OpenShift Route能正确匹配路由 SSLProxyEngine On # 若Route为HTTPS协议,必须开启此选项 # 代理/console路径到OpenShift Route地址 <Location /console> ProxyPass http://xxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:80 ProxyPassReverse http://xxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:80 # 如果Route是HTTPS协议,替换为以下两行: # ProxyPass https://xxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:443 # ProxyPassReverse https://xxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:443 </Location> # 如需代理所有路径,取消下方注释(按需调整) # <Location /> # ProxyPass http://xxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:80 # ProxyPassReverse http://xxxxxxxxxxxx.apps.dev-rdc-01.xxxxxx.xxxxx.xxxxx.eg:80 # </Location> </VirtualHost>
步骤3:关键配置说明
- ProxyPreserveHost On:必须开启,否则OHS转发请求时会将Host头替换为Route的地址,导致OpenShift Route无法正确路由到后端Pod。
- SSLProxyEngine On:如果Route是HTTPS协议,必须启用此选项,否则OHS无法与HTTPS后端建立连接。
- X-Forwarded系列请求头:确保后端OAM等产品能获取到真实的客户端IP、请求协议等信息,避免后续认证或跳转出现异常。
- 移除mod_wl_ohs相关配置:该模块仅适用于直接连接WebLogic集群的场景,与当前代理Route的需求不匹配,是导致报错的直接原因。
步骤4:验证配置并重启OHS
- 检查配置文件语法正确性:执行
httpd -t(或OHS对应的命令,如opmnctl validate) - 重启OHS服务:执行
httpd -k restart(或opmnctl restartproc process-type=OHS)
内容的提问来源于stack exchange,提问作者saurabh panai
相关产品推荐
相关产品推荐

