我在本地 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>