我在Ubuntu
上有Apache2
(监听443)和一个运行在Tomcat7
(监听8443)上的web应用程序。
我将apache2设置为反向代理,以便通过端口443而不是8443访问web应用程序。此外,我不仅需要在浏览器和apache2之间,而且还需要在apache2和tomcat7之间进行SSL通信,因此我在apache2和tomcat7上都设置了SSL。如果我尝试通过直接联系tomcat7来访问web应用程序,一切都是正常的。问题是,当我试图通过apache2 (反向代理)访问tomcat的web应用程序时,浏览器上出现以下错误:
Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server
发布于 2014-02-27 21:14:25
MK的评论给我指明了正确的方向。
在Apache2.4和更高版本的情况下,有不同的默认值和新的指令。
我运行的是Apache 2.4.6,我必须添加以下指令才能使其正常工作:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
发布于 2019-05-05 14:04:48
我有2个服务器设置在码头,反向代理和网络服务器。这个错误在一年后突然开始在我所有的网站上发生。在之前的设置中,我在web服务器上生成了一个自签名证书。
所以,我不得不重新生成SSL证书,它开始工作了…
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt
发布于 2021-09-12 15:11:13
在远程OEL (Oracle Enterprise Linux) 7.8服务器上,我有一个运行HTTPS/8009的后端web应用程序。由于这是一个第三方应用程序,我没有选择禁用SSL或更改端口。
因为我需要从本地机器的浏览器访问web应用程序,所以我想使用Apache httpd设置一个反向代理(HTTP到HTTPS映射)。现在,我可以通过以下URL从本地浏览器访问web应用程序:
http://10.157.146.97:1234/
仅供参考,在Linux机器中工作的CURL命令如下:
curl http://10.157.146.97:1234/
curl -k https://localhost:8009/
这是我的反向代理设置:
/etc/httpd/conf/httpd.conf
Listen 1234
<VirtualHost *:1234>
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost On
ProxyPass / https://localhost:8009/
ProxyPassReverse / https://localhost:8009/
</VirtualHost>
有一个方面我挣扎了很多,早些时候我试图在ProxyPass/ProxyPass中使用url模式(/sample),但这导致了css/js文件的HTTP404(找不到),因为web应用程序的欢迎页面包含间接的css/js路径(示例代码如下)。所以用(/)替换url模式(/sample)也解决了这个问题。
previous Not working config:
ProxyPass /sample https://localhost:8009/
ProxyPassReverse /sample https://localhost:8009/
<script defer src="abc.js"></script><link href="xyz.css" rel="stylesheet"></head>
https://stackoverflow.com/questions/18872482
复制相似问题