我已经检查了问题,并发现一个没有答案,但它涉及到windows,所以可能有人可以帮助linux:我们的应用程序包括:
我们有10个IP地址的专用服务器,我们可以在Node js层上很好地利用这些地址。使用http包选项在每个请求上设置不同的IP:
let options = {
hostname: 'www.example.com',
localAddress: '202.1.1.1'
};
let req = http.request(options, function(res) {
res.on('data', function (chunk) {
console.log(chunk.toString());
});
});
效果非常好:但问题是我们如何在nginx层解决这个问题:
假设我们有[127.154.24.54,127.154.24.55,127.154.24.56]
,假设后端API(我们的内部)正在向外部路由/example.com/api/connect
发出请求,那么随机(或使用队列系统)使用上面阵列中的一个IP?
这背后的原因是第三方服务具有基于IP地址的速率限制,并且我们不希望到处改变源代码来调整http请求选项:这在nginx层上有可能实现吗?如何实现
谢谢
1条答案
按热度按时间jm81lzqq1#
最简单的方法似乎是:
location
指令中,使用proxy_bind
将传出请求绑定到接受传入请求的IP:listen
部分中列出)访问上述服务器,或者通过DNS平衡,或者通过其各自配置中的上游,例如:更多信息:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
更复杂的解决方案可能包括一些Lua代码,用于从列表或范围中选择IP,请参见此处的示例:https://serverfault.com/questions/751922/nginx-proxy-bind-to-random-ip-address-in-range