我正在尝试建立一个开发环境,我的所有应用程序都分为两部分。 ReactJS 前端的访问地址为http://127.0.0.1:3000
,Ruby 后端的访问地址为http://127.0.0.1:3001
。
我将这两行添加到我的/etc/hosts
:
127.0.0.2 myapp.dev
127.0.0.3 api.myapp.dev
这样,当我发出类似 的浏览器请求时http://myapp.dev
,我需要将其重定向到http://127.0.0.1:3000
。当我的前端使用 AJAX 调用 API 时http://api.myapp.dev
,我需要将此请求重定向到http://127.0.0.1:3001
.
我需要路由所有来自127.0.0.2
to 的请求以及来自to 的127.0.0.1:3000
所有请求。127.0.0.3
127.0.0.2:3001
我知道这可以通过设置反向代理来完成。但出于多种原因,我想知道是否可以使用 IPTABLES 来做到这一点。如果是这样,该怎么做。
提前致谢!
答案1
要将访问重定向到 from 127.0.0.2:80
to 127.0.0.1:3000
,您可以执行以下操作:
# iptables -t nat -A PREROUTING -p tcp -d 127.0.0.2 \
--dport 80 -j REDIRECT --to-port 3000
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.2 \
--dport 80 -j REDIRECT --to-port 3000
第一条规则(链中PREROUTING
)将匹配来自本地主机以外的其他地方的流量。第二条规则(链中OUTPUT
)将匹配来自本地主机的流量。
请注意,iptables 链中的规则会被处理为了,因此,如果您的防火墙中存在在这些规则之前匹配的现有规则,则结果可能不是您所期望的。
有关详细信息,请阅读有关REDIRECT
目标的信息iptables 扩展手册页。