![将IP指向应用程序实例](https://linux22.com/image/28697/%E5%B0%86IP%E6%8C%87%E5%90%91%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%AE%9E%E4%BE%8B.png)
我只是想知道如何使用与我当前指向主服务器的 IP 不同的 IP 将我购买的静态 IP 地址指向我的服务器上的应用程序实例?
这让我完全困惑,我知道两个相关的命令,但我不知道如何强制它们将 IP 指向我的本地主机上的某个端口。我认为它们是ARP和路由。我可能完全错了。
我想做的就是将不同的 IP 地址指向不同的 Java 实例。
我也使用 CentOS 5.9
答案1
IP 地址不指向端口或应用程序。它们指向(虚拟)机器、容器或上下文。
应用程序侦听一个端口,该端口可以(取决于它传递到的端口bind
)计算机上的所有 IP 地址,也可以侦听一个 IP 地址。因此,最好的办法是让您的应用程序使用正确的 IP 调用绑定。例如,您可以让两个不同的程序侦听端口 80,只要它们侦听不同的 IP 地址即可。许多程序允许您指定要侦听的 IP,有时使用语法,10.0.0.1:1234
其中 10.0.0.1 是 IP,1234 是端口。当您省略 IP 时,它们默认为 0.0.0.0,这是计算机上的所有地址。
如果您的应用程序无法做到这一点,您可以(正如金发姑娘所暗示的那样)使用 NAT 来解决它。基本上,您让每个应用程序侦听不同的端口,例如 8080 和 8081。然后设置 NAT 规则以重定向端口 80:
iptables -t nat -A PREROUTING -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 8080
iptables -t nat -A PREROUTING -d 10.0.0.2 -p tcp --dport 80 -j DNAT --to-destination 8081
当然,您可以添加其他防火墙规则来阻止对端口 8080 和 8081 的直接访问。
您也可以使用 ipvs 来执行此操作。或者代理服务器。可能还有几种方法。