![将域重定向到同一台计算机上的不同端口](https://linux22.com/image/54299/%E5%B0%86%E5%9F%9F%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%90%8C%E4%B8%80%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E7%9A%84%E4%B8%8D%E5%90%8C%E7%AB%AF%E5%8F%A3.png)
我使用以下命令重定向80
到3000
.来自任何域的所有请求都会重定向到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.com
,domain2.com
会将其请求发送到侦听的进程8002
以及 上的其他两个域8001
吗?
答案1
答案2
使用apache
:
这可能是一个简单的起点 - 特别是如果您正在考虑使用apache
.请注意,正如@Tony 提到的,有更有效的代理可用,如果您不使用apache
托管进程,那么绝对值得考虑这些代理。
您需要找到httpd.conf
适合您的特定发行版的文件。它们的名称和位置确实有所不同,因此您必须阅读文档或 Google。下面的示例基于 CentOS 7(运行apache
v2.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 更改为您的计算机。