假设我有 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 都已加密。