proxy.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const proxy = require('express-http-proxy')
  2. const use = true
  3. const gate = process.env.VUE_APP_GATEWAY
  4. const base_url = process.env.VUE_APP_BASE_API
  5. const mapKey = process.env.VUE_APP_OFFLINE_MAP.replace(base_url, '')
  6. const minioKey = process.env.VUE_APP_MINIO.replace(base_url, '')
  7. const thumbnailKey = process.env.VUE_APP_THUMBNAIL.replace(base_url, '')
  8. const isHttps = url => !/^[0-9.:]+$/.test(url)
  9. module.exports = {
  10. register (router) {
  11. if (use) {
  12. router.use(mapKey, createProxy(process.env.VUE_APP_OFFLINE_MAP_GATEWAY, process.env.VUE_APP_OFFLINE_MAP_PROXY))
  13. router.use(minioKey, createProxy(gate, minioKey))
  14. router.use(thumbnailKey, createThumbnailProxy(gate))
  15. router.use('/', createProxy(gate, '/prod-api'))
  16. }
  17. }
  18. }
  19. function createProxy (to, replace) {
  20. return proxy(to, {
  21. https: isHttps(to),
  22. parseReqBody: false,
  23. proxyReqPathResolver (req) {
  24. const url = replace ? `${replace}${req.url}` : req.url
  25. console.log(`proxy ${url} to ${to}`)
  26. return url
  27. }
  28. })
  29. }
  30. function createThumbnailProxy (to) {
  31. return proxy(to, {
  32. https: isHttps(to),
  33. parseReqBody: false,
  34. proxyReqPathResolver (req) {
  35. const url = `${thumbnailKey}${req.url.replace(new RegExp(`http.*${minioKey}`), `http${isHttps ? 's' : ''}://${gate}${minioKey}`)}`
  36. console.log(`thumbnail ${url} to ${to}`)
  37. return url
  38. }
  39. })
  40. }