diff --git a/app.js b/app.js
index a8380aed8..beb0743b9 100644
--- a/app.js
+++ b/app.js
@@ -27,6 +27,7 @@ const errors = require('./lib/errors')
 const models = require('./lib/models')
 const csp = require('./lib/csp')
 const metrics = require('./lib/prometheus')
+const { useUnless } = require('./lib/utils')
 
 const supportedLocalesList = Object.keys(require('./locales/_supported.json'))
 
@@ -147,7 +148,7 @@ app.use('/uploads', express.static(path.resolve(__dirname, config.uploadsPath),
 app.use('/default.md', express.static(path.resolve(__dirname, config.defaultNotePath), { maxAge: config.staticCacheTime }))
 
 // session
-app.use(session({
+app.use(useUnless(['/status', '/metrics'], session({
   name: config.sessionName,
   secret: config.sessionSecret,
   resave: false, // don't save session if unmodified
@@ -159,7 +160,7 @@ app.use(session({
     secure: config.useSSL || config.protocolUseSSL || false
   },
   store: sessionStore
-}))
+})))
 
 // session resumption
 const tlsSessionStore = {}
diff --git a/lib/utils.js b/lib/utils.js
index 44ff8892c..1e6e76543 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -25,3 +25,12 @@ exports.getImageMimeType = function getImageMimeType (imagePath) {
       return undefined
   }
 }
+
+exports.useUnless = function excludeRoute (paths, middleware) {
+  return function (req, res, next) {
+    if (paths.includes(req.path)) {
+      return next()
+    }
+    return middleware(req, res, next)
+  }
+}