一尘不染

如何在其他路径下运行此图像代理?

go

我正在使用https://github.com/willnorris/imageproxy代表用户获取和调整图像大小。默认应用程序可以运行,但是我想将此应用程序与现有服务器集成,并将路径更改为“
/ proxy /”,因为“ /”将用于我的主应用程序。我也不想单独运行它,因为实际上我只需要几行。我有:

p := imageproxy.NewProxy(nil, nil)
p.SignatureKey = []byte("secret key")
p.Timeout = 10 * time.Second

router := mux.NewRouter().StrictSlash(true)
router.NewRoute().Name("proxy").Methods("GET").Path("/proxy/").Handler(p)

server := &http.Server{
    Addr:    "127.0.0.1:8000",
    Handler: router,
}

我收到每个图像的“ 404页面未找到”。更改为:

server := &http.Server{
    Addr:    "localhost:8000",
    Handler: p,
}

log.Fatal(server.ListenAndServe())

作品。是否可以更改路径?


阅读 220

收藏
2020-07-02

共1个答案

一尘不染

在调用图像代理处理程序之前,使用http.StripPrefix从请求路径中删除“
/ proxy”:

router.NewRoute().Name("proxy").Methods("GET").PathPrefix("/proxy/").Handler(http.StripPrefix("/proxy", p))

另外,在“ /
proxy”下的所有路径上使用PathPrefix而不是Path进行匹配。

2020-07-02