diff --git a/app.js b/app.js index 34a107ae1..050970b35 100644 --- a/app.js +++ b/app.js @@ -181,7 +181,7 @@ app.use(flash()) // passport app.use(passport.initialize()) -app.use(useUnless(['/status', '/metrics'], passport.session())) +app.use(useUnless(['/status', '/metrics', '/_health'], passport.session())) // check uri is valid before going further app.use(require('./lib/web/middleware/checkURIValid')) diff --git a/lib/web/statusRouter.js b/lib/web/statusRouter.js index f2d0bddf0..3f49b211a 100644 --- a/lib/web/statusRouter.js +++ b/lib/web/statusRouter.js @@ -12,6 +12,16 @@ const { urlencodedParser } = require('./utils') const statusRouter = module.exports = Router() +statusRouter.get('/_health', function (req, res) { + res.set({ + 'Cache-Control': 'private', // only cache by client + 'X-Robots-Tag': 'noindex, nofollow' // prevent crawling + }) + res.send({ + ready: !realtime.maintenance + }) +}) + // get status statusRouter.get('/status', function (req, res, next) { realtime.getStatus(function (data) { diff --git a/public/docs/release-notes.md b/public/docs/release-notes.md index 752450cc2..c2bb55f3c 100644 --- a/public/docs/release-notes.md +++ b/public/docs/release-notes.md @@ -5,6 +5,7 @@ ### Enhancements - Extend boolean environment variable parsing with other positive answers and case insensitivity. - Allow setting of `documentMaxLength` via `CMD_DOCUMENT_MAX_LENGTH` environment variable. +- Add dedicated healthcheck endpoint at /_health that is less resource intensive than /status. ## 1.9.7 2023-02-19