我目前有一个pfSense
防火墙,它将端口 80 和 443 重定向到内部 Apache,该 Apache 充当我们公司几个子域的反向代理。
由于pfSense
通过 Squid3 提供了反向代理,我想摆脱 Apache 服务器并pfSense
改为路由所有内容。
我当前的 Apache 配置如下:
<VirtualHost *:80 *:443>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ServerName trac.mycompany.com
SSLProxyEngine on
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
ProxyPreserveHost On
ProxyPass / https://trac.mycompany.com/
ProxyPassReverse / https://trac.mycompany.com/
ProxyVia on
</VirtualHost>
<VirtualHost *:80 *:443>
ServerName svn.mycompany.com
ProxyPass / http://svn.mycompany.com/
ProxyPassReverse / http://svn.mycompany.com/
ProxyVia On
</VirtualHost>
如您所见,两者都非常简单。我知道使用 HTTPS 和单个外部 IP 地址的虚拟主机会限制我使用自签名证书,并且我知道存在风险,但目前我并不关心(我只希望用户名和密码以加密形式发送)。
在 上pfSense
,我对其进行了如下配置:
反向代理已打开。trac
和svn
都在同一台本地服务器 (192.168.0.26) 上运行。 问题是,当代理访问内部服务器时,本地服务器 Apache 总是尝试为trac
子域提供服务,而不是按名称匹配。
我可以使用 的反向代理模块来实现这一点吗pfSense
?我是否遗漏了一些明显的东西?
答案1
我知道这是一个迟来的回复,但迟做总比不做好:) 你现在可能已经整理好了,但是如果你没有...在运行相同 NIC 的本地服务器上创建一个辅助 IP 地址,并在单独的 IP 上运行每个网站。
我认为您永远无法使用相同的 IP 地址和端口为 2 个 https 站点提供服务,因为标头会因加密而丢失,并且您最终总是停留在主默认站点上。2 个 http 站点很好,但 2 个 https 站点需要不同的端口或不同的 IP。