【发布时间】:2018-11-08 22:22:51
【问题描述】:
我目前正在使用主机文件将所有流量重定向到某个外部主机到我的机器,以便我的 (nodejs) 应用程序拦截它。
/etc/hosts:
127.0.0.1 externalhost.com
我的应用程序接收到所有应该去externalhost.com 的流量,然后决定是否去
a) 将请求转发到原始资源(例如对externalhost.com/target_B 的请求)
b) 拦截请求并发回自定义响应(例如向externalhost.com/target_A 的请求)
但是,原始资源是我在主机文件中定义的主机,因此,创建了一个无限循环。
有没有办法以编程方式禁用主机重定向?由于性能原因,我不想每次都写入该文件。
【问题讨论】:
-
您的应用是否通过读取 /etc/hosts 来查找原始资源?
-
不,原始资源取自请求本身(
req.host、req.originalUrl等) -
我无法理解您的设置,也许您可以发布
/etc/hosts的相关部分和您的代码。当您只想重定向针对外部服务器的请求时,我不明白为什么您会收到将目标设置为服务器的请求。 -
当然。这是
/etc/hosts的相关部分:127.0.0.1 externalhost.com 我只需要拦截到某个目标路径的请求,比如说“externalhost.com/target_A”。为了能够过滤这个特定的路径,我的应用程序接收到所有应该去 externalhost.com 的流量,然后决定是否 a)将请求转发到原始资源(例如,请求到“externalhost.com/target_B")b)拦截请求并发回自定义响应(例如对“externalhost.com/target_A"”的请求)
标签: node.js unix dns localhost