使用express和proxy搭建本地服务器

334 阅读2分钟

express代理静态资源

工作中有比较老的项目还是使用jq写的代码,这时就需要把本地的资源代理到线上进行修改。使用了express 和 http-proxy-middleware(代理中间件)

新建一个server.js文件

server.js文件随意放在电脑的任何位置,只要启动时在所在目录启动即可:

启动server.js

运行命令:node server.js 

server.js的内容

const express = require('express')
const { createProxyMiddleware } = require('http-proxy-middleware')

const app = express()
const port = 3001

// 设置代理目标
const target = 'http://example.com'
//const target = 'http://10.16.25.109/'

const proxyOptions = createProxyMiddleware({
  target,  // 目标服务器  
  changeOrigin: true,  // 对目标服务器的请求头进行修改
  secure: false,     //不安全的,不使用https访问,使用http访问
  pathRewrite: {
    //'^/api': '', // 重写路径,去掉/api前缀
  },
  onProxyRes: function (proxyRes, req, res) {
    // 设置CORS头部
    proxyRes.headers['Access-Control-Allow-Origin'] = '*'
  }
})
// 配置代理中间件
// 
app.use(['/yondif-gla-be', '/iuap-apcom-workbench'], proxyOptions)
// 配置代理中间件
app.use(['/yondif-glb-be', '/iuap-apcom-workbench'], proxyOptions)

// 配置代理中间件
app.use(['/yondif-glf-be', '/iuap-apcom-workbench'], proxyOptions)

// 服务静态文件
// gla配置文件
app.use('/yondif-gla-fe/yondif-gl/pf/gl/', express.static('/workspace/cwy-8.33/gl-8.33/gl-fe/pf/gla/'))  // /workspace/cwy-8.33/gl-8.33/gl-fe/pf/gla/为自己的本地文件夹,存放静态资源的,这句的意思是把本地的资源代理到线上/yondif-gla-fe/yondif-gl/pf/gl/。只要访问以/yondif-gla-fe/yondif-gl/pf/gl/开头的文件,则自动代理到本地/workspace/cwy-8.33/gl-8.33/gl-fe/pf/gla/文件夹下
app.use('/yondif-gla-fe/yondif-gl/pf/glCommon/', express.static('/workspace/cwy-8.33/gl-8.33/gl-fe/pf/glCommon/'))
app.use('/yondif-gla-fe/yondif-gl/pf/pub/', 





//express监听3001端口,启动服务  
app.listen(port, () => {
  console.log(`Static page server running on http://localhost:${port}`)
})


在这个示例中,所有请求以 `/yondif-gla-be``/iuap-apcom-workbench` 开头的请求都会被代理到 `http://example.com`,并且相应的前缀会被移除。这意味着请求 `/yondif-gla-be/test` 会被转发到 `http://example.com/test`,请求 `/iuap-apcom-workbench/test` 也是一样。

请确保将 `http://example.com` 替换为你实际的目标服务器地址。根据具体需求,你还可以进一步调整配置选项。

proxy代理后端接口到线上

vue中新建vue.config.js

   内容如下:
   
module.exports = {
  pwa: {},

  devServer: {
    open: false,
    host: '0.0.0.0',
    //指定用于侦听请求的端口号
    port: 8088,
    //默认情况下,dev-server将通过HTTP提供。它也可以选择通过HTTPS在HTTP/2上提供:
    https: false,
    //启用热模块替换(请参阅 devServer.hot),在没有页面刷新的情况下作为构建失败时的后备。
    hotOnly: false,
    // 开发环境线上服务代理配置
    // R5环境配置代理,防止跨域
    proxy: {
      '/yondif-gla-be': {
        target: proxyPath,
        secure: false,
        changeOrigin: true,
        // pathRewrite: {
        //   '^/yondif-gla-be': '' //重写路径,不能重写路径,因为这样调用接口前面都不加yondif-gla-be了
        // },
        cookieDomainRewrite: {
          '*': proxyPath
        },
        headers: {
          Origin: proxyPath
        }
      },
      '/ur': {
        target: proxyPath,
        secure: false,
        changeOrigin: true,
        // pathRewrite: {
        //   '^/yondif-gla-be': '' //重写路径,不能重写路径,因为这样调用接口前面都不加yondif-gla-be了
        // },
        cookieDomainRewrite: {
          '*': proxyPath
        },
        headers: {
          Origin: proxyPath
        }
      }
    }
  },
}