首页 > 解决方案 > 如何将子目录/子域放在另一台服务器(或共享主机)

问题描述

我有一个托管在 Ubuntu 18.04 服务器上的 Go 服务器端程序。我想在共享主机中example.com使用 Go,然后example.com/blog使用PHP。blog.example.com我更喜欢用 Go 本身来做这件事,而不是用另一个 Web 服务器(例如:Nginx),我该怎么做?

标签: gowebserver

解决方案


您需要将另一个服务器/进程提供的端点作为反向代理来处理。标准库为您提供了httputil.ReverseProxy,它充当了一个标准http.Handler,使这变得非常容易。

尝试这样的事情:

target, err := url.Parse("http://blog.example.com/")
if err != nil {
    panic(err)
}
proxy := httputil.NewSingleHostReverseProxy(target)

mux.Handle("/blog", proxy)

推荐阅读