-
- Notifications
You must be signed in to change notification settings - Fork 2.3k
Closed
Description
Issue Description
The proxy middleware is not forwarding requests
Expected behaviour
Middleware should be called to forward request to the another echo instance
> GET http://localhost:8081/resource/1 < HTTP 200 > PUT http://localhost:8081/resource/1 < HTTP 200 Actual behaviour
Middleware is not called and I'm getting back a 405 status code (method not allowed)
> GET http://localhost:8081/resource/1 < HTTP 405 > PUT http://localhost:8081/resource/1 < HTTP 200 Steps to reproduce
GET http://localhost:8081/resource/1 Working code to debug
package main import ( "net/http" "net/url" "github.com/labstack/echo" "github.com/labstack/echo/middleware" ) func main() { // echo instance 1 e1 := echo.New() g1 := e1.Group("/api") g1.GET("/resource/:id", func(c echo.Context) error { return c.NoContent(http.StatusOK) }) e1url, _ := url.Parse("http://localhost:8080") // echo instance 2 e2 := echo.New() g2 := e2.Group("/api") g2.PUT("/resource/:id", func(c echo.Context) error { return c.NoContent(http.StatusOK) }) g2.Use(middleware.Proxy(middleware.NewRoundRobinBalancer([]*middleware.ProxyTarget{ { URL: e1url, // forward all requests with /api prefix to server running on port 8080 (except PUT /resource/:id) }, }))) go e1.Start(":8080") e2.Start(":8081") }