有没有办法在单个端口(例如 80)上处理对多个 Go Web 应用程序的侦听。我知道 ServeMux 和侦听不同传入主机名的能力,但在这种方法中,它们必须在同一个程序中处理,因此必须在同一个二进制文件中处理。最好的方法是在一个二进制文件中侦听 :80 上的主机名,然后将请求/响应编写器发送到其他地方的另一个相应的二进制文件吗?我会用"os/exec"这个吗?您将如何将Request和ResponseWriter参数传递给这个外部二进制文件?提前致谢!编辑:不同二进制来源的 goroutine 是否可以访问彼此的通道?这将是一个很酷的方式来做到这一点。
1 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
执行此操作的常用方法是使用反向代理,根据请求中的主机名将请求定向到相关的应用服务器(通常运行在不同的端口或不同的机器上)。
一种常见的方法是使用Apache这一点,但如果你想从去做到这一点,该ReverseProxy
类型从net/http/httputil
包装应该有所帮助。
httputil.NewSingleHostReverseProxy(baseurl)
将为您提供一个 HTTP 处理程序,该处理程序将请求代理到另一个网站并返回结果。因此,您可以通过多路复用 HTTP 处理程序实现前端,该ReverseProxy
处理程序根据请求的主机名将请求定向到多个处理程序之一。
如果您需要比NewSingleHostReverseProxy
给您更复杂的路由,您可以Director
在创建代理处理程序时使用自定义函数。
- 1 回答
- 0 关注
- 222 浏览
添加回答
举报
0/150
提交
取消