根据域将特定端口上的所有流量转发到另一个端口

根据域将特定端口上的所有流量转发到另一个端口

假设我有 10 个不同的域。所有这些域都有一个指向单个 IP 地址的 A 记录。这个 IP 上托管了十个不同的服务。假设它们监听从端口:80:90。所用协议的默认端口是,我无法强制用户在域名后:80附加。:82

问题是这样的:我想:80根据使用的域名进行内部转发。

  • domain0.com:80-->:80
  • domain1.com:80-->:81
  • domain2.com:80-->:82
  • domain3.com:80-->:83
  • ...

我在 Google 上搜索了一下,发现了iptables。这就是我要找的吗?

答案1

一般情况下不能这样做。当客户端通过 TCP 和/或 UDP 连接时,服务器不知道客户端使用哪个域来请求服务器的 IP 地址。

由于您提到了端口 80,因此您可能指的是 HTTP 流量。在这种情况下,可以进行这种区分,因为 HTTP 协议也会传输所选域名。您可以使用 Apache 之类的 HTTP 服务器,并为每个域配置一个虚拟主机,该虚拟主机充当反向代理并将流量转发到正确的端口。这样的配置可能看起来像这样:

<VirtualHost *:80>
    ServerName domain1.com

    ProxyPass / http://server-ip:81/
</VirtualHost>

proxy为了使其正常工作,proxy_http需要激活模块。

答案2

您可以使用代理或负载均衡器(例如 haproxy)来执行您要求的操作。但如果您只想在同一个 IP 上托管多个网站,那么使用标头将是标准方法。

如果您尝试在同一个 IP 上托管多个 SSL 站点,那么这两种方法都不起作用,因为标头和 URL 都已加密。

相关内容