我有一个使用NAT运行在防火墙后面的debian web服务器(nginx)。 Web服务器正在托pipe几个需要SSL和自己的IP地址的站点。 我希望SSL站点只监听其特定IP地址,共享站点只监听共享IP。
现在我正在监听所有域的通配符*,我假设这意味着它正在侦听单个局域网地址,并且根据主机名而不是IP地址提供站点内容。 我想纠正这一点。
什么是正确的行动? 是为每个IP地址创build一个1:1 NAT,并将LAN IP添加到networking接口来侦听,然后将LAN IP分配给特定的域? 或者,还有更好的方法? 有什么方法可以传递公共知识产权,并据此采取行动? 谢谢。
不,在完成NAT之后,不能通过原始目标IP地址,至less不能直接通过。
我将使用192.0.2.0/24作为您的外部IP块,并将198.51.100.0/24作为您的内部IP块(请参阅RFC5737)。
你可以做的一些事情包括:
如果你使用后一种解决scheme,你的环境将会更简单和更符合标准,因为你不会处理exception的端口号和端口转换,但是你需要为每个web服务器分配多个内部IP(我收集你有只有一个)。 另外,如果您使用后一种解决scheme,则可以使用1:1 NAT。
也就是说,如果您没有任何理由将networking服务器置于NAT之后(NAT不是防火墙),那么只需监听外部IP(这样做也需要更改拓扑结构)。
这听起来像你想为每个网站不同的公共IP地址。 这意味着防火墙必须提供不同的公共IP地址。 然后,防火墙可以将请求转发到不同的IP地址到nginx服务器,或者将这些请求转发到同一IP地址的不同端口。 然后您可以让nginx服务器做出相应的响应。
具体如何configuration取决于您的防火墙。 例如,使用iptables,你可以在脚本中这样做:
KINCAID=192.168.1.112 EXTIPJMN=50.60.70.80 iptables -t nat -A PREROUTING -d $EXTIPJMN -p tcp -i $EXT --dport 8081 -j DNAT --to-destination $KINCAID:8080
这将路由来自IP地址EXTIPJMN(50.60.70.80)和端口8081的请求到IP地址KINCAID(192.168.1.112)和端口8080的内部服务器
即使通过https也可以从同一个IP地址提供不同的站点,这是大多数现代客户支持的,但不是全部。