gpt4 book ai didi

https - 使用 HTTPS 在 Apache 后面配置 Tomcat8

转载 作者:行者123 更新时间:2023-12-03 17:14:35 25 4
gpt4 key购买 nike

我在我的服务器中的 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/

任何想法表示赞赏

最佳答案

对于端口,当您使用 ProxyPreserveHost On 时然后你设置 X-Forwarded-* header ,您可以使用 RemoteIpValve :

<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" /> 

连接器将很简单:

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443"
address="172.31.33.105"
/>

阀门检测 proto并假设连接使用默认端口号 ( https://xxxxx/yyy ) 进行保护。

对于位置,您应该在 odata 中部署您的应用程序。上下文,以便您可以使用
    ProxyPass           /odata    http://172.31.33.105:8080/odata

修改代理传递上的上下文(从/odata/到/)有点棘手,因为您需要过滤来自后端服务器的所有文本以修复某些 url 路径。这真的很痛苦(我应该用“/odata/xxx”替换所有的“/xxx”吗?)

关于https - 使用 HTTPS 在 Apache 后面配置 Tomcat8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53783315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com