本质上我有httpd重新路由HTTP请求到某个位置subdomain.domain.com/folder到Tomcat( http://localhost:8080/app/
)。 这可以正常使用ProxyPass和ProxyPassReversefunction。 但是,当使用https进行此操作时,我的Tomcat实例抱怨说,它不知道如何处理安全连接。 基本上我试图请求进入https://subdomain.domain.com/folder被解密的apache然后发送到http://localhost:8080/app/
。 我设置的相关虚拟主机是这样的:
我希望这是明确的。 如果你需要更多的澄清,我可以提供。
<VirtualHost *:443> # General setup for the virtual host DocumentRoot "/srv/www/docroot/" ServerName subdomain.domain.com #ServerAdmin [email protected] ErrorLog /var/log/apache2/mydomain-ssl-error_log TransferLog /var/log/apache2/mydomain-ssl-access_log # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on SSLCertificateFile /etc/apache2/certs/my-cert.crt SSLCertificateKeyFile /etc/apache2/certs/my-key.key SSLCertificateChainFile /etc/apache2/certs/DigiCertCA.crt # Turn on proxy engine so urls can be forwarded SSLProxyEngine on # URLs to forward <Location /folder> ProxyPass http://localhost:8080/app/ ProxyPassReverse http://localhost:8080/app/ </Location> # 4 possible values: All, SSLv2, SSLv3, TLSv1. Allow TLS only: SSLProtocol all -SSLv2 -SSLv3\
Tomcatconfiguration:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" keystoreFile="/usr/share/apache-tomcat-7.0.27/.keystore" keystorePass="Kurusawa701" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
您不提供错误消息或Tomcat端的Connection
设置的描述,所以我在这里猜测:
balancer
方法 就个人而言,我使用AJP与Tomcat,因为它对我的大脑更好,或者我只是有麻烦的Java设置。
完全摆脱8443端口上的第二个Tomcat连接器。 将另一个redirectPort更改为443.摆脱SSLProxyEngine指令,或将其closures。 目前,您(a)能够接收Tomcat中的HTTPS,您不需要,以及(b)由于SSLProxyEngine而从Apache发送HTTPS,这也是您不需要的。
redirect/文件夹到/ app会有很大的麻烦,因为Tomcatnetworking应用程序将生成以/ app开头的内部自引用URL。 有各种解决scheme,如ProxyPassReverse和mod_proxy_http,但在我看来治疗比疾病更糟糕。 使它们相同,例如/ app / app,那么你也可以摆脱ProxyPassReverse。 尝试使您的Apache在URL方面完全透明,这可能意味着调整Tomcat Web应用程序的名称。