如何创建在单个端口下公开多个服务的简单反向代理

如何创建在单个端口下公开多个服务的简单反向代理

微服务的常见问题是,如果使用 AJAX 并尝试从多个主机/端口读取输入(由于跨域请求),开发它们可能会很麻烦。

我正在寻找一个可以与 Linux 一起使用的非常简单的解决方案(最好使用 python 或 socat),其中我可以在单个端口下链接几个主机/端口。

host1:port1/service1 and host2:port2/service2 ... -> localhost:port

所有远程主机/端口都可以通过同一个 localhost:port 访问。

请求应根据以下路径转发:

localhost:port/service1 -> host1:port1/service1 
localhost:port/service2 -> host2:port2/service2

答案1

http 反向代理就可以了,就像这个启用了 mod_proxy 的 apache 配置一样。

Listen port
ProxyPass /service1 http://host1:port1/service1
ProxyPass /service2 http://host1:port1/service2

调度 localhost:port/service1 和 localhost:port/service2 需要了解 http 协议。服务在 tcp 层上没有区别,但是是一个 http get 请求。我不知道 socat 是否可以处理这个问题。

相关内容