proxy.js 1.2 KB

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