JMD*_*JMD 30 ssl proxy apache-2.2
我正在尝试设置一个带有多个 Web 应用程序的服务器,这些应用程序都将通过 apache VirtualHost(在同一台服务器上运行的 apache)提供服务。我的主要限制是每个 Web 应用程序都必须使用 SSL 加密。在谷歌搜索了一段时间并查看了有关stackoverflow的其他问题后,我为VirtualHost编写了以下配置:
<VirtualHost 1.2.3.4:443>
ServerName host.example.org
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
尽管https://host.example.org:8443是可访问的,https://host.example.org不是,这违背了我的虚拟主机配置的目的。Firefox 抱怨说,即使它成功连接到服务器,连接也被中断。我还在 apache 的 error.log 中收到以下警告:
proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be host.example.org for uri
Run Code Online (Sandbox Code Playgroud)
在 Web 应用程序(Tomcat 服务器)上,访问日志显示了一个奇怪的访问请求:
"?O^A^C / HTTP/1.1" 302
Run Code Online (Sandbox Code Playgroud)
以下是我直接连接到https://host.example.org:8443时得到的正确访问请求:
"GET / HTTP/1.1" 302
Run Code Online (Sandbox Code Playgroud)
最后我还应该提到,当我不使用 SSL 时,虚拟主机工作得非常好。
我怎样才能使这项工作?
JMD*_*JMD 37
最后我找到了让它工作的方法。首先,我尝试了 Dave Cheney 的建议,因此我为重定向到 Tomcat 非 SSL 端口的 apache 服务器安装了另一个证书(因此代理重定向到http://localhost:8080/)。不幸的是,它并没有完全正常工作,因为在 Web 浏览器中,https 在连接后立即转换为 http。所以我恢复使用https://localhost:8443/并使其工作的最后一步是再次添加 SSLProxyEngine。
这是生成的 VirtualHost 配置:
<VirtualHost 1.2.3.4:443>
ServerName host.domain.org
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/apache2/ssl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/certificate.key
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153250 次 |
| 最近记录: |