我有一个路由器,可以将所有 80 端口转发到 Debian Web 服务器,但我想在该服务器上添加另一台服务器。我怎样才能让 Debian 将任何试图访问 git.domain.com 的人转发到 192.168.0.21 或任何其他地址(这样 git.domain.com 就会转到标准 IP,只是被转发到另一台本地服务器,这样它就会有一个 FQDN)?
答案1
您可以在首先受到流量影响的服务器上使用 apache 的 proxy_mod 和 vhosts。
第一个虚拟主机将仅提供本地内容。第二个虚拟主机将是存储在另一台服务器上的内容的代理。您的虚拟主机将类似于以下内容:
ServerName git.domain.com
DocumentRoot /var/www/
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass / http://192.168.0.21:80/
ProxyPassReverse / http://192.168.0.21:80/
答案2
端口转发适用于 IP 地址和端口,而不是主机名,所以简而言之 - 您不能。假设您有多个指向同一公共 IP 地址的 DNS 条目,路由器必须以某种方式检查 HTTP 请求以决定将其发送到哪个内部 Web 服务器 - 我认为这超出了所有家庭网络设备的范围。
唯一可以做到这一点的方法是拥有多个公共 IP,每个 IP 在内部转发到不同的 Web 服务器,或者为其他 Web 服务器转发不同的端口(例如,81)。
答案3
最简单的方法之一就是运行反向代理,例如 haproxy。您可以在 Debian 服务器上运行它,然后将请求转发到您想要的位置。
简单举个例子:您的代理监听端口 80,并将 a.example.com 的所有内容转发到监听 127.0.0.1:8080 的 apache 实例,将 b.example.com 的所有内容转发到另一台机器上的 apache 实例(例如 192.168.0.21:80)。
haproxy 网站上的文档非常简单易懂,您可以根据自己的情况进行应用:http://haproxy.1wt.eu。请注意,将会有大量与您无关的信息,因为 haproxy 可以执行的远不止这项简单的任务。