![多个 IP 地址与反向代理/Apache 重写](https://linux22.com/image/555236/%E5%A4%9A%E4%B8%AA%20IP%20%E5%9C%B0%E5%9D%80%E4%B8%8E%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%2FApache%20%E9%87%8D%E5%86%99.png)
我们是一家小公司,正在尝试确定内部设备的最佳架构。我们有一些开发、生产和准备环境。它们都是公开可访问的(但当然要受密码限制)。
对于一个相当简单的需求,我真的不认为有必要为每个盒子设置多个 IP 地址。这似乎增加了不必要的复杂性。相反,我认为在这个阶段最好只使用一个带有反向代理(例如 Squid)的公共 IP 地址,或者只使用 Apache 中的重写将请求转发到适当的服务器(取决于域名)。
您的想法是什么?我错了吗?无论组织规模如何,多个 IP 地址都是可行的方法吗?您通常选择哪种方法?
答案1
对于反向代理,我更喜欢使用 varnish 或 ha-proxy,而不是 squid。但是,拥有单独的 IP 地址可以提供更大的灵活性 - 例如,如果您想使用不同的协议(如 ssh)远程访问盒子。代理还需要多一层,这会影响性能并使诊断复杂化。
答案2
我们使用 apache 来重写/代理内部 Web 服务器,效果非常好。但是,在服务器上设置虚拟主机时要小心,因为第一个与模式匹配的规则就是被选中的规则。顺序可能很重要。例如,如果您有一个默认或后备转发位置(例如您的主站点),则它需要放在最后。
此外,SSL 也有点棘手。您需要 *.yourdomain.com 的通配符证书,然后对每个虚拟主机使用 URL 匹配进行转发。通配符证书可能有点棘手,但也不是太糟糕。
答案3
我没有发现使用 Apache 代理返回到适当的内部服务器有什么固有的坏处。只需设置 windcard DNS,这样您就可以拥有 dev.foo.com、test.foo.com 等,然后使用相应的代理规则设置 vhost 定义以路由回适当的框。也就是说,您可以使用一些工具来执行此操作;Apache 不是唯一的解决方案。
至于证书,除非您绝对需要有效的开发/测试证书,否则只需制作您自己的通配符证书。
此外,Squid 是一个很好的 FORWARD 代理,但是反过来它就太重了/很糟糕。