![将 mod_rewrite/多个端口从一个 IP 移至多个 IP](https://linux22.com/image/608837/%E5%B0%86%20mod_rewrite%2F%E5%A4%9A%E4%B8%AA%E7%AB%AF%E5%8F%A3%E4%BB%8E%E4%B8%80%E4%B8%AA%20IP%20%E7%A7%BB%E8%87%B3%E5%A4%9A%E4%B8%AA%20IP.png)
我们有一台服务器,想要运行内部网应用程序的多个版本,并希望可以通过 Web 浏览器通过其名称访问它们,而无需端口号。
这是我们当前的设置:dnsmgmt
我们有一些 CNAME 别名:“intranet”、“dev”、“production”等,全部指向servername.ourdomain.lan.
。然后我们有一个指向其静态 IP 的服务器名称的主机 (A) 记录。
然后,我们让每个内部网应用程序版本运行自己的 httpd 实例,外加一个用于“内部网”的实例。现在,内部网的配置文件让它监听端口 80(其他端口有自己的端口),并使用 mod_rewrite 将流量从别名重定向到同一个东西,但添加了特殊端口。这样,如果您转到http://dev/
,内部版本是 ,http://dev:1234/
但对于用户来说,它看起来像他们输入的内容。我们还有一些外部网版本,因此如果您愿意,您可以在网络外使用端口号进行访问。
出于以下原因,如果我们摆脱 mod_rewrite 层就好了:
- 它会为了调试目的而屏蔽来自 mod_perl 的重要信息,例如请求的原始 IP 地址(仅显示服务器的 IP)——可以使用另一个模块来获取此信息
- 当内网服务中断时,应用程序的所有版本都无法访问,因此:
- 任何服务变更都必须在下班后进行
- 如果发生影响内联网服务的事情,情况就更加危险
- 每个请求和启动时的开销更大
- 如果出现问题或者需要进行更改,则需要查看更多代码
我可能一开始就只以这种方式进行设置,因为我不知道还有其他方法 - 可能发现帮助/文档更适用于托管服务提供商而不是内部网服务器。
我想这样做:
- 添加更多 IP 地址,每个服务一个
- 配置我们的内联网应用程序的 httpd.confs 以监听其新 IP 地址的 80 端口(或者更好的是,其别名的 80 端口)
- 将 CNAME 别名替换为指向新 IP 地址的主机 (A) 记录,而不是
servername.ourdomain.lan.
- 配置我们的路由器,将外联网请求重新路由到适当的 IP 而不是端口
- 删除内网的 CNAME 并关闭
我思考这应该允许从内部和外部提供与以前相同的浏览器服务。
我的问题是,这种设置有什么缺点吗/是否可以这样做/这样做明智吗?我以前从未尝试过运行多个内部 IP。这会对我们的内联网造成任何影响吗?我们的外联网?我们的服务器?我们的网络?
答案1
至少有一个问题:
出于某种原因,添加 IP 地址似乎会导致某些程序(SQL Server、httpd、dns、lsass 等)绑定(有时)与它们的连接,即使我没有明确告知这些服务新的 IP 地址(事实上,httpd 设置为 Listen intranet:80 和 Listen dev:12222,所以为什么它绑定到除了这些名称之外的任何内容,我不确定。)也许他们正在进行某种负载平衡,即使 TCP/IP 属性中没有选中网络负载平衡。