我想将来自foo.com的80和443上的所有stream量映射到内部服务器:192.168.1.101。 我有一个VirtualHost(在Ubuntu上的Apache 2.2)设置如下(注意,我不得不打破下面的超链接,因为我是一个“新用户”):
<VirtualHost *:80> ServerName foo.com ServerAlias *.foo.com ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://192.168.1.101/ ProxyPassReverse / http://192.168.1.101/ </VirtualHost>
这对于httpstream量很有效。 但是,我似乎无法为https做同样的事情。 我努力了:
更改VirtualHost *:80到* – 但这不起作用(我需要http-> http和https-> https)
为*:443创build一个新的VirtualHost条目,redirect到http://192.168.1.101/ ,但也失败了(浏览器超时)
我在这里和其他地方做了一些search,我能find的最接近的问题就是这个 ,但是没有完全回答。
另外,出于好奇,我试图将所有端口映射到https(通过从http到https更改两个ProxyPass行(并从VH中删除:80),这也不起作用。 ?
有什么想法吗? 提前致谢。
这曾经为我工作
<VirtualHost *:443> ServerName domaine.com SSLProxyEngine on <Location /> ProxyPass https://www.something.com/ ProxyPassReverse https://www.something.com/ </Location> </VirtualHost>
以下为我工作:
<VirtualHost ABCD:443> ... ProxyPass / https://192.168.1.101/ ProxyPass / https://192.168.1.101/ </VirtualHost>
(显然, ABCD是你的公有IP地址)
我个人会完全跳过Apache,并使用IPTABLES将80和443上的所有stream量转发到所需的IP,可以想象这会带来更高的性能。
(假设您可以访问机器来编辑防火墙规则)。
$iptables -A PREROUTING -t nat -i $EXTIF -p tcp --dport 80 -j DNAT --to 192.168.1.101:80 $iptables -A FORWARD -p tcp -m state --state NEW -d 192.168.1.101 --dport 80 -j ACCEPT
从我的防火墙简单地发挥,我只是做你正在做的事情。
如果你想所有的请求被redirect到安全的networking,即通过https添加以下内容:
<VirtualHost *:443> ServerName ngmlx441 SSLEngine on KeepAliveEnabled ON SSLCipherSuite HIGH:MEDIUM SSLProtocol all SSLProxyEngine on SecureProxy ON SSLProxyEngine on SSLCertificateFile /etc/httpd/conf.d/servername.crt SSLCertificateKeyFile /etc/httpd/conf.d/servername.key SSLCACertificateFile /etc/httpd/conf.d/orgination.crt </VirtualHost>