反向代理 http -> https?

反向代理 http -> https?

我们有带有自签名 SSL 证书的 HTTPS 测试服务器。是否有任何反向代理可以让我们以 HTTP 访问页面,以便我们的程序可以发送 HTTP 请求而不是 HTTPS 请求?

答案1

您可以使用 apache 来完成此操作。

首先,您需要加载 ssl、proxy、proxy_http 和 proxy_html 模块。

然后,您需要如下代理设置:

<VirtualHost 0.0.0.0:80>
    ServerName give_it_a_name

    SSLProxyEngine on

    ProxyPass / https://your-test-server/
    ProxyPassReverse / https://your-test-server/

    ErrorLog /the/error.log
</VirtualHost>

当然,您不需要 VirtualHost,您可以将 ProxyPass* 和 SSLProxy* 指令嵌入到任何其他主机定义中。

请注意,证书必须由受信任的机构签名。如果您使用自签名证书,则必须使用

SSLProxyCACertificateFile /the/pem/file

或者

SSLProxyCACertificatePath /the/dir/where/the/cert/files/are

指令。

此外,Apache 还会检查远程主机的名称是否与颁发证书的名称相同。您可以通过添加

SSLProxyCheckPeerCN off

行到您的配置中。有关进一步的设置,您可能需要检查Apache 文档

答案2

如果您的测试服务器启用了 HTTP,您可以简单地代理到该协议(假设 apache 和 mod_rewrite):

RewriteEngine On
RewriteRule ^/foo(.*)$ http://testserver.example.org/$1 [P]

如果未加密的 HTTP 端口上没有任何内容监听,那么您就不能直接剥离 SSL。

答案3

RewriteEngine On
RewriteRule ^/foo(.*)$  https://%{HTTP_HOST}%{REQUEST_URI} [R]

相关内容