2017-12-10 7 views
1

私は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()) 

作品。パスを変更することは可能ですか?

答えて

2

使用http.StripPrefixは画像プロキシハンドラを呼び出す前に、要求パスから「/プロキシ」を削除するには:

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

また、「/プロキシ」下のすべてのパスに一致するPathPrefix代わりのパスを使用します。

+0

まだまだ404 –

+0

がサイズ変更を破るようです。 –

+1

[この行](https://github.com/willnorris/imageproxy/blob/e7f9017674d9badb025048fb73bfa39782016e5d/imageproxy.go#L118)のr.URL.Pathの値をチェックしてデバッグします。問題がマルチプレクサやストリップ接頭辞などであるかどうかを教えてください。 –

関連する問題