【发布时间】:2019-05-15 22:28:34
【问题描述】:
我在服务器的 8080 端口上安装了 Tomcat 8,我正在使用安全的 Apache(使用 Proxy Pass)公开它。
这是我的 Apache 配置:
<VirtualHost *:443>
ServerName myserver.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /odata/ http://172.31.36.251:8080/
ProxyPassReverse /odata/ http://172.31.36.251:8080/
<Proxy *>
allow from all
</Proxy>
RequestHeader set X-Forwarded-Port 443
RequestHeader set X-Forwarded-Scheme https
</VirtualHost>
这里是 Tomcat server.xml 配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
address="172.31.36.251"
proxyName="myserver.com"
scheme="https" proxyPort="443" />
在此之前一切正常。如果我调用我的应用程序: https://myserver.com/odata/D3a1593adae89/odata.svc/
我明白了:
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="https://myserver.com:443/D3a1593adae89/odata.svc/">
<workspace>
<atom:title>Default</atom:title>
<collection href="Maintables">
<atom:title>Maintables</atom:title>
</collection>
</workspace>
</service>
问题:如果在结果中看到属性xml:base,Tomcat用端口装饰地址,我真的不知道怎么去掉.地址也是错误的:应该是https://myserver.com:443/odata/D3a1593adae89/odata.svc/。我一直在环顾四周并尝试将 proxyPort 设置为空白但什么也没有。我认为这与使用 https://cwiki.apache.org/confluence/display/HTTPD/TomcatModProxyHTML 中所述的反向代理时断开的链接有关。我尝试了一些重写,例如:
ProxyHTMLURLMap http://172.31.33.105:8080 /odata
RewriteEngine On
RewriteRule ^/odata$ https://myserver.com/odata/ [R,L]
但我就是无法让它发挥作用。 xml:base 应该是https://myserver.com/odata/D3a1593adae89/odata.svc/
任何想法都值得赞赏
【问题讨论】:
标签: https apache2 tomcat8 proxypass