在 Apache 中使用一个虚拟主机代理 http 和 https 请求

在 Apache 中使用一个虚拟主机代理 http 和 https 请求

我在本地 IP 192.168.0.14 上运行了一个 Apache。对 myweb.domain.sk 的 Internet 请求被转发到 192.168.0.14:4444。Apache 应该只代理这些请求。

Web 应用程序在本地网络主机名上运行myweb(MS IIS,不同的 IP 地址),并且可以通过本地网络访问http://myweb.domain.sk 和 https://myweb.domain.sk。

但是,我无法通过 HTTP 访问互联网,只能通过 HTTPS 访问。这是 Apache 的设置:

<VirtualHost 192.168.0.14:4444>
    ServerName myweb.domain.sk
    ServerAlias myweb.domain.sk
    SSLProxyCheckPeerCN on
    SSLProxyCheckPeerExpire on
    ProxyVia Block
    ProxyPreserveHost Off
    ProxyPassMatch ^/?(.*)  https://myweb.domain.sk/$1
    ProxyPassReverse / https://myweb.domain.sk/

    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile "conf/ssl.crt/myweb.cer"
    SSLCertificateKeyFile "conf/ssl.key/myweb.key"
    LogLevel debug
</VirtualHost>

我还应该做什么才能让网络通过http://myweb.domain.sk? 谢谢

答案1

HTTP 和 HTTPS 必须使用不同的端口。由于 Apache 的 VirtualHost 块将端口作为其标识的一部分,因此您需要VirtualHost 为同一个域名设置块 – 一个有SSLEngine on,另一个没有。(每个端口Listen也需要在路由器中设置相应的选项和端口转发规则。)

# Port forwarding WAN:443 -> 192.168.0.14:4444
<VirtualHost 192.168.0.14:4444>
    ServerName myweb.domain.sk
    ServerAlias myweb.domain.sk
    SSLProxyCheckPeerCN on
    SSLProxyCheckPeerExpire on
    ProxyVia Block
    ProxyPreserveHost Off
    ProxyPassMatch ^/?(.*)  https://myweb.domain.sk/$1
    ProxyPassReverse / https://myweb.domain.sk/

    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile "conf/ssl.crt/myweb.cer"
    SSLCertificateKeyFile "conf/ssl.key/myweb.key"
    LogLevel debug
</VirtualHost>

# Port forwarding WAN:80 -> 192.168.0.14:8888
<VirtualHost 192.168.0.14:8888>
    ServerName myweb.domain.sk
    ServerAlias myweb.domain.sk
    SSLProxyCheckPeerCN on
    SSLProxyCheckPeerExpire on
    ProxyVia Block
    ProxyPreserveHost Off
    ProxyPassMatch ^/?(.*)  https://myweb.domain.sk/$1
    ProxyPassReverse / https://myweb.domain.sk/

    SSLProxyEngine on
    LogLevel debug
</VirtualHost>

相关内容