From 90663f3bfe8adfbf676ca478d71e2fe059583424 Mon Sep 17 00:00:00 2001 From: Jasper Spahl Date: Sun, 30 Jan 2022 17:21:00 +0100 Subject: [PATCH] created proxy for development --- assets/src/App.tsx | 1 + main.go | 2 +- server/server.go | 31 +++++++++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/assets/src/App.tsx b/assets/src/App.tsx index 6288bdb..4f00c6a 100644 --- a/assets/src/App.tsx +++ b/assets/src/App.tsx @@ -5,6 +5,7 @@ function App() { return (

App

+

Some other stuff

) } diff --git a/main.go b/main.go index 82eb4fa..48590f6 100644 --- a/main.go +++ b/main.go @@ -25,6 +25,6 @@ func main() { models.SeedDatabase() - server.Setup() + server.Setup(prodMode) } diff --git a/server/server.go b/server/server.go index 30fe699..3e8a0b1 100644 --- a/server/server.go +++ b/server/server.go @@ -2,22 +2,49 @@ package server import ( "net/http" + "net/http/httputil" + "net/url" "github.com/gin-contrib/static" "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" "spahl.ddns.net/jasper/wok-able-backend/controllers" ) var httpServer *http.Server var httpRouter *gin.Engine -func Setup() { +func proxy(c *gin.Context) { + remote, err := url.Parse("http://localhost:3000") + if err != nil { + panic(err) + } + + proxy := httputil.NewSingleHostReverseProxy(remote) + + proxy.Director = func(req *http.Request) { + req.Header = c.Request.Header + req.Host = remote.Host + req.URL.Scheme = remote.Scheme + req.URL.Host = remote.Host + req.URL.Path = c.Request.URL.Path + } + proxy.ServeHTTP(c.Writer, c.Request) +} + +func Setup(prodMode string) { httpRouter = gin.New() httpRouter.Use(gin.Logger()) - httpRouter.Use(static.Serve("/", static.LocalFile("./assets/build", false))) controllers.Setup(httpRouter) + if prodMode == "release" { + httpRouter.Use(static.Serve("/", static.LocalFile("./assets/build", false))) + } else { + httpRouter.NoRoute(proxy) + log.Info("using reverse proxy") + } + httpRouter.Run() }