![如何创建在单个端口下公开多个服务的简单反向代理](https://linux22.com/image/1429579/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%9C%A8%E5%8D%95%E4%B8%AA%E7%AB%AF%E5%8F%A3%E4%B8%8B%E5%85%AC%E5%BC%80%E5%A4%9A%E4%B8%AA%E6%9C%8D%E5%8A%A1%E7%9A%84%E7%AE%80%E5%8D%95%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86.png)
微服务的常见问题是,如果使用 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 是否可以处理这个问题。