Apache ProxyPassReverse 和 https

Apache ProxyPassReverse 和 https

我想将 foo.com 上 80 和 443 上的所有流量映射到内部服务器: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>

这对于 http 流量非常有效。但是,我似乎无法对 https 执行相同的操作。我尝试过:

  • 将 VirtualHost *:80 更改为 * - 但这不起作用(我需要 http->http 和 https->https)

  • 为 *:443 创建一个新的 VirtualHost 条目,重定向到 http://192.168.1.101/,但也会失败(浏览器超时)

我在这里和其他地方进行了一些搜索,我能找到的最接近的问题是,但这并没有完全回答你的问题。

此外,出于好奇,我尝试将所有端口映射到 https(通过将两个 ProxyPass 行从 http 更改为 https(并从 VH 中删除 :80),但这也不起作用。您也会这样做吗?

有什么想法吗?提前致谢。

答案1

这曾经对我有用

<VirtualHost *:443>                                                                                                                                                                        
 ServerName domaine.com
 SSLProxyEngine on                                                                                                                                                                          
 <Location />                                                                                                                                                                               
 ProxyPass https://www.something.com/                                                                                                                                                           
 ProxyPassReverse https://www.something.com/                                                                                                                                                    
 </Location>                                                                                                                                                                                
</VirtualHost>

答案2

以下对我有用:

<VirtualHost A.B.C.D:443>
    ...

    ProxyPass / https://192.168.1.101/
    ProxyPass / https://192.168.1.101/
</VirtualHost>

A.B.C.D显然你的公共 IP 地址在哪里)

答案3

我个人将完全跳过 Apache 并使用 IPTABLES 将 80 和 443 上的所有流量转发到所需的 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

从我的防火墙中简短地摘录一下,我所做的正是你想做的事情。

答案4

如果您希望将所有请求重定向到安全网络,即通过 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>

相关内容