在我们的用例中,我们尝试使用 apache 代理隐藏第三方代理的代理认证,因为云服务器提供商与 ip 白名单不兼容。
这意味着我们从服务器尝试使用代理。而代理需要 IP 白名单验证。
因此尝试设置一个转发到外部代理的代理,其中我们的代理有一个静态 IP。
我们做的第一件事就是在 AWS 上安装一个 Apache 服务器,配置如下:
ProxyRequests On
ProxyPreserveHost On
<VirtualHost *:8001>
ProxyPass / http://yyy.externalprovider.io:8230/ Keepalive=On
ProxyPassReverse / http://yyy.externalprovider.io:8230/
</VirtualHost>
这对于 http 和 https 都完全没问题。但请求仍然来自我们的服务器 ip。
在此之后,我可以使用正常的 http 运行,但 https 总是出现 502 网关错误。使用以下配置
ProxyRequests Off
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
SSLProxyCheckPeerExpire Off
ProxyPreserveHost On
<VirtualHost *:8001>
ProxyPass / http://yyy.externalprovider.io:8230/ Keepalive=On
ProxyPassReverse / http://yyy.externalprovider.io.io:8230/
</VirtualHost>
在我们的 apache2.conf 中我已经将 ProxyTimeout 配置为 300,因为这是互联网上提到最多的解决方案。
有人知道为什么这不起作用吗?
答案1
删除所有 SSLProxy* 语句并添加带有 ProxyRequest On 的 RemoteProxy,问题得到解决。