我已根据需要在 Tomcat 8.5 和 OpenJDK 1.8 上安装了 Pentaho (9.x)。
在它前面的是带有 mod_proxy_http 的 Apache 2.4。
我的网站使用 HTTPS 提供服务,并且我有以下代理规则:
RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost on
ProxyPass "/pentaho" "http://tomcat_host_ip:8080/pentaho"
ProxyPassReverse "/pentaho" "http://tomcat_host_ip:8080/pentaho"
ProxyPass "/pentaho/" "http://tomcat_host_ip:8080/pentaho/"
ProxyPassReverse "/pentaho/" "http://tomcat_host_ip:8080/pentaho/"
ProxyPass "/pentaho/Login" "http://tomcat_host_ip:8080/pentaho/Login"
ProxyPassReverse "/pentaho/Login" "http://tomcat_host_ip:8080/pentaho/Login"
当我尝试登录时,在 POST 过程中出现错误:https://pentaho.mywebsite.org/pentaho/j_spring_security_check https://pentaho.mywebsite.org/pentaho/j_spring_security_check
应用程序尝试使用 HTTP 协议而不是 HTTPS 进行响应。
在请求标头中,我有正确的 Referer 和 Origin:
起源:https://pentaho.mywebsite.org https://pentaho.mywebsite.org推荐人:https://pentaho.mywebsite.org/pentaho/Login https://pentaho.mywebsite.org/pentaho/Login
但响应标头使用 HTTP 而不是 https 进行回复:
地点http://pentaho.mywebsite.org/pentaho/ http://pentaho.mywebsite.org/pentaho/
我解决了这个问题,只需将 proxyPort="443" 和 schema="https" 添加到 Tomcat 中的 http 连接器即可。
The rule
RequestHeader set X-Forwarded-Proto "https"
在 Apache 上没有用。这是我正确的 Apache 配置
ProxyPreserveHost on
ProxyPass "/pentaho" "http://tomcat_host_ip:8080/pentaho"
ProxyPassReverse "/pentaho" "http://tomcat_host_ip:8080/pentaho"
ProxyPass "/pentaho/" "http://tomcat_host_ip:8080/pentaho/"
ProxyPassReverse "/pentaho/" "http://tomcat_host_ip:8080/pentaho/"
这是我的 Tomcat HTTP 连接器
<Connector URIEncoding="UTF-8"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
proxyPort="443"
scheme="https"
redirectPort="8443"
relaxedPathChars="[]|"
relaxedQueryChars="^{}[]|&"
maxHttpHeaderSize="65536"
/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)