From 1b148786a521334690143a880a5b57fbfad43f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=B0=8F=E6=AD=A6?= Date: Sun, 8 Oct 2023 17:31:52 -0500 Subject: [PATCH] Fix: Update `x-forwarded-host` field when using reverse proxy (#3726) --- server/routers/api-router.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index f51f046dd..e50040f2e 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -1,5 +1,12 @@ let express = require("express"); -const { allowDevAllOrigin, allowAllOrigin, percentageToColor, filterAndJoin, sendHttpError } = require("../util-server"); +const { + setting, + allowDevAllOrigin, + allowAllOrigin, + percentageToColor, + filterAndJoin, + sendHttpError, +} = require("../util-server"); const { R } = require("redbean-node"); const apicache = require("../modules/apicache"); const Monitor = require("../model/monitor"); @@ -22,10 +29,14 @@ router.get("/api/entry-page", async (request, response) => { allowDevAllOrigin(response); let result = { }; + let hostname = request.hostname; + if ((await setting("trustProxy")) && request.headers["x-forwarded-host"]) { + hostname = request.headers["x-forwarded-host"]; + } - if (request.hostname in StatusPage.domainMappingList) { + if (hostname in StatusPage.domainMappingList) { result.type = "statusPageMatchedDomain"; - result.statusPageSlug = StatusPage.domainMappingList[request.hostname]; + result.statusPageSlug = StatusPage.domainMappingList[hostname]; } else { result.type = "entryPage"; result.entryPage = server.entryPage;