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 (
)
}
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()
}