将域重定向到同一台计算机上的不同端口

将域重定向到同一台计算机上的不同端口

我使用以下命令重定向803000.来自任何域的所有请求都会重定向到3000

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

必须处理:一个监听80001,另一个监听8002如何将两个域链接到两个端口?

是否可以有如下所示的 JSON 配置?

[
    {
       "port": 8001,
       "domains": ["example.com", "example2.com"] 
    },
    {
       "port": 8002,
       "domains": ["domain.com", "domain2.com"] 
    }
]

那么domain.comdomain2.com会将其请求发送到侦听的进程8002以及 上的其他两个域8001吗?

答案1

通常你必须设置你的网络服务器虚拟主机有可能模组代理(对于阿帕奇)。

但是,我建议您使用反向代理,例如哈代理照顾那个。设置 Haproxy,使其侦听端口 80 并使用域名上的 ACL 将流量引导至 Web 服务器。使用监听 127.0.0.1:8002 和 127.0.0.1:80001 的虚拟主机设置您的网络服务器(如果 haproxy 在同一服务器上运行)。

设置非常简单。

看着这个例子。它用于将 haproxy 放在 Docker 容器前面,但您可以调整配置以满足您的需求。

答案2

使用apache

这可能是一个简单的起点 - 特别是如果您正在考虑使用apache.请注意,正如@Tony 提到的,有更有效的代理可用,如果您不使用apache托管进程,那么绝对值得考虑这些代理。

您需要找到httpd.conf适合您的特定发行版的文件。它们的名称和位置确实有所不同,因此您必须阅读文档或 Google。下面的示例基于 CentOS 7(运行apachev2.4)

/etc/httpd/conf/httpd.conf文件中添加:

<VirtualHost example.com:80>
    ProxyPass / http://localhost:8001
    ProxyPassReverse / http://localhost:8001
</VirtualHost>

<VirtualHost example2.com:80>
    ProxyPass / http://localhost:8001
    ProxyPassReverse / http://localhost:8001
</VirtualHost>

<VirtualHost domain.com:80>
    ProxyPass / http://localhost:8002
    ProxyPassReverse / http://localhost:8002
</VirtualHost>

<VirtualHost domain2.com:80>
    ProxyPass / http://localhost:8002
    ProxyPassReverse / http://localhost:8002
</VirtualHost>

您需要重新启动(或重新加载)apache以使其读取新配置。

使用防火墙确保外部无法访问端口 8001 和 8002。

答案3

当您使用 DNAT 时,可以使用以下命令:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.10.10:8001

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.10.10:8002

您必须将 10.10.10.10 更改为您的计算机。

相关内容