我一直在尝试使用apache 2 mod_proxy和proxypass&proxypassreverse指令设置反向代理 .
我正在安装WSO2 Identity Server,并希望使用如下所示的URL访问该应用程序 .
hxxp://myserver.domain.com/wso2/
myserver.domain.com
可在互联网上访问
在我的网络内部,我已经在我的apache2配置中使用以下参数设置了一个虚拟主机:
由于各种原因,端口80不可用,虚拟主机必须保持为:8080 .
最后,这是我的虚拟主机配置
<VirtualHost *:8080>
<Location /wso2/>
ProxyPass hxxps://internal.wso2.node:9443/
ProxyPassReverse hxxs://internal.wso2.node:9443/
</Location>
ProxyVia On
ProxyPreserveHost Off
ProxyAddHeaders Off
ProxyRequests Off
SSLProxyEngine On
SSLProxyCheckPeerCN Off
</VirtualHost>
问题:
我可以使用我的网络浏览器(Firefox / Chrome)来请求http://myserver.domain.com/wso2/资源 . 在我的日志文件中,我看到请求确实命中了apache服务器,virtualhost捕获了/ wso2 / location .
它通过代理并登陆internal.wso2.node服务器 . 然而,产品WSO2 IS预先形成了几个重定向,在日志文件中我看到它请求附加端口的资源 .
这是请求流程
hxxp://myserver.domain.com/wso2/ -> hxxps://internal.wso2.node:9443/
REDIRECT x3
hxxps://internal.wso2.node:8080/carbon ->
hxxps://internal.wso2.node:8080/carbon/admin/login.jsp
Back to my web browser
hxxp://myserver.domain.com:8080/wso2/carbon/admin/login.jsp
由于某种原因,apache响应将其虚拟主机附加到我请求的URL .
如果我删除端口:8080并再次请求完整的URL它将访问资源 . 但是,任何仅使用http://myserver.domain.com/wso2/进行访问的尝试都将导致重定向并附加端口 .
1 回答
根据考夫纳的建议,本案中的罪魁祸首证明是以下指令:
此外,我尝试访问的Web应用程序使用会话和cookie,因此我们还必须代理这些,请参阅ProxyPass和ProxyPassReverse下添加的指令 .
因此,更新的virtualhost配置文件现在应该如下所示