diff --git a/README.md b/README.md index e682445d..2f980f5a 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,8 @@ sudo service nginx restart + 例子:`SESSION_SECRET=random_string` 3. `SQL_DSN`:设置之后将使用指定数据库而非 SQLite。 + 例子:`SQL_DSN=root:123456@tcp(localhost:3306)/one-api` +4. `FRONTEND_BASE_URL`:设置之后将使用指定的前端地址,而非后端地址。 + + 例子:`FRONTEND_BASE_URL=https://openai.justsong.cn` ### 命令行参数 1. `--port `: 指定服务器监听的端口号,默认为 `3000`。 diff --git a/router/main.go b/router/main.go index 04132719..2cb50364 100644 --- a/router/main.go +++ b/router/main.go @@ -2,12 +2,24 @@ package router import ( "embed" + "fmt" "github.com/gin-gonic/gin" + "net/http" + "os" + "strings" ) func SetRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { SetApiRouter(router) SetDashboardRouter(router) SetRelayRouter(router) - setWebRouter(router, buildFS, indexPage) + frontendBaseUrl := os.Getenv("FRONTEND_BASE_URL") + if frontendBaseUrl == "" { + SetWebRouter(router, buildFS, indexPage) + } else { + frontendBaseUrl = strings.TrimSuffix(frontendBaseUrl, "/") + router.NoRoute(func(c *gin.Context) { + c.Redirect(http.StatusMovedPermanently, fmt.Sprintf("%s%s", frontendBaseUrl, c.Request.RequestURI)) + }) + } } diff --git a/router/web-router.go b/router/web-router.go index 7b428c39..71e98c27 100644 --- a/router/web-router.go +++ b/router/web-router.go @@ -10,7 +10,7 @@ import ( "one-api/middleware" ) -func setWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { +func SetWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { router.Use(gzip.Gzip(gzip.DefaultCompression)) router.Use(middleware.GlobalWebRateLimit()) router.Use(middleware.Cache())