const proxy = require('express-http-proxy') const use = true const gate = process.env.VUE_APP_GATEWAY const base_url = process.env.VUE_APP_BASE_API const mapKey = process.env.VUE_APP_OFFLINE_MAP.replace(base_url, '') const minioKey = process.env.VUE_APP_MINIO.replace(base_url, '') const thumbnailKey = process.env.VUE_APP_THUMBNAIL.replace(base_url, '') const isHttps = url => !/^[0-9.:]+$/.test(url) module.exports = { register (router) { if (use) { router.use(mapKey, createProxy(process.env.VUE_APP_OFFLINE_MAP_GATEWAY, process.env.VUE_APP_OFFLINE_MAP_PROXY)) router.use(minioKey, createProxy(gate, minioKey)) router.use(thumbnailKey, createThumbnailProxy(gate)) router.use('/', createProxy(gate, '/prod-api')) } } } function createProxy (to, replace) { return proxy(to, { https: isHttps(to), parseReqBody: false, proxyReqPathResolver (req) { const url = replace ? `${replace}${req.url}` : req.url console.log(`proxy ${url} to ${to}`) return url } }) } function createThumbnailProxy (to) { return proxy(to, { https: isHttps(to), parseReqBody: false, proxyReqPathResolver (req) { const url = `${thumbnailKey}${req.url.replace(new RegExp(`http.*${minioKey}`), `http${isHttps ? 's' : ''}://${gate}${minioKey}`)}` console.log(`thumbnail ${url} to ${to}`) return url } }) }