我有两台服务器 - 一台运行 Debian Linux,另一台运行 Windows Server。
它们都位于同一网络中,并且具有单个公共 IP 地址。端口 80 配置为在 Windows 上提供来自 IIS 的内容。
我想在域 redmine.example.com - 端口 80 下发布在 Linux 上运行的 redmine 实例。我该怎么做?
答案1
我不太确定我是否理解了您的问题,但我认为您的意思是您有两个 Web 服务器,它们都可以从外部世界访问。您的 IIS(Windows)服务器当前在端口 80 上为 www.example.com 提供服务。您想要设置第二个 Debian 服务器,以在端口 80 上为 redmine.example.com 提供服务。当您说“它们都在同一个网络中,并且具有单个公共 IP 地址。”时,这是否意味着每个服务器都有自己的独立 IP,或者您是否有一个路由到 LAN 路由器的 IP 地址?
如果每个服务器都有自己的 IP 地址,您只需更新您的 DNS A 记录以反映您的 Debian 服务器在端口 80 的 IP 地址(ei 1.1.1.1:80)(端口 80 是默认端口,但如果您不澄清这一点,某些 DNS 服务器可能会感到困惑。)
如果您只有一个 IP 地址,则需要将一些外部端口转发到 Debian 服务器 IP 地址的端口 80。
为此,我们首先要确定端口 80 以外的某个外部端口(因为端口 80 已转发到您的 IIS 服务器)。您可以选择任何您想要的端口,只要它不与任何端口冲突(即选择端口 8080 不是一个好主意)。当被迫这样做时,我通常会取 LAN IP 地址的最后一块并将其与实际服务端口相结合。假设您的 Debian 的 LAN IP 是 10.27.1.102,我想使用 SSH(端口 22),我将创建外部端口引用:10222。您不必这样做,这只是我一直做的事情。
其次,我们需要配置路由器上的 NAT 设置(在某些网络设备上有时称为“端口转发”或“端口触发”)。创建一个新条目。“外部端口”是您刚刚想到的端口(我创建的是 10222)。“内部地址”是 Debian 服务器的 LAN IP 地址。“内部端口”是端口 80(根据您的原始帖子)请务必保存此信息。
现在,您只需更新 redmine.example.com 的 DNS A 记录。您应该将其设置为您必须想出的端口上的外部/公共 IP 地址(再次,我选择端口 10222 来解释这一点)因此,如果您的公共地址是:1.1.1.1,那么您的记录应该是 1.1.1.1:10222。
给 DNS 一些时间来更新,你就好了!
抱歉,如果我写了一本书,我对网络管理非常热衷,这是我最擅长的:)
如果你有任何问题,或者想让我解释一下为什么这样做有效,请随时提问。或者直接在 wiki 上查看“端口转发”哈哈
答案2
user97959 有一个非常好的方法来解决您的问题,我希望为您的问题提供另一种解决方案,以防您的网络不支持您使用他的方法或者您不愿意。我会做以下事情。选择您想要作为主服务器的任意机器,通常我选择 linux 但是如果您是 windows 用户也不必害羞。现在您必须编辑您的 APACHE 或 IIS 设置,这样当一个请求进入带有 redmine.example.com/www.example.com url 的机器时它会自动将请求转发到正确的服务器。您需要使用内部 ip 地址才能正常工作。这与创建带有单个负载均衡器的负载均衡器并也在负载均衡器上运行站点非常相似。它可以达到目的但有点不道德。您可能只想再买一个超轻规格的机器如果您花时间并正确创建负载平衡器/反向代理服务器,您可以使用不到 1GB 的 RAM 来完成它。