Skip to content

核心配置

本文整理了 createProxyPlugin 可接收的全部选项,并给出默认值与典型场景。

ProxyPluginOptions

选项类型默认值说明
envProxyEnv | stringProxyEnv.Local当前生效的代理环境
targetsPartial<ProxyTargets<TEnv>>-针对不同环境的代理目标集合
loggerLoggerConfig-日志配置
requestFilterRequestFilter-控制哪些请求被记录
responseFilterResponseFilter-控制哪些响应被记录
middlewareProxyMiddleware[][]HTTP 请求中间件
wsMiddlewareWebSocketMiddleware[][]WebSocket 中间件
sseMiddlewareSSEMiddleware[][]SSE 中间件
webSocketFilterWebSocketFilter-控制接入的 WebSocket
customProxyConfigPartial<ProxyOptions>-透传给 http-proxy 的原始配置
rewriteRulesRecord<string, string>-URL 重写映射
webSocketWebSocketConfig-WS 全局配置
sseSSEConfig-SSE 全局配置
enabledbooleantrue是否启用代理
devOnlybooleanfalse仅在 vite dev 生效

WebSocketConfig 关键字段

  • timeout:连接超时时间(ms)
  • maxConnections:最大并发连接数,超过则拒绝新连接(默认 50)
  • heartbeatInterval:心跳日志间隔(ms,设 0 关闭,默认 30000)

SSEConfig 关键字段

  • enabled:是否启用
  • maxConnections:最大并发连接数,超过则拒绝新连接(默认 100)
  • heartbeatInterval:心跳日志间隔(ms,设 0 关闭,默认 30000)

targets 结构

ts
type ProxyTarget =
  | string
  | {
      target: string;
      path?: string;
      rewrite?: string;
      ws?: WebSocketConfig;
      sse?: SSEConfig;
    };
  • 当值为 字符串 时,插件会根据键名推导路径:v3 -> /api/v3v2 -> /apiv1 -> /api/v1、其他键 -> /{key}
  • 当值为 对象 时,可独立控制 target/path/rewrite,并针对单一路径开启 WS / SSE。
  • / 开头的键会直接视为路径,例如 "/oss"

rewrite 优先级

对象.rewrite > rewriteRules[path] > path 本身

配置文件分层

  1. 内联配置:写在 createProxyPlugin({...})
  2. 外部配置:自动加载 proxy.config.*(详见外部配置
  3. 运行时更新:通过 ViteProxyPlugin 实例方法调用(详见运行时控制

插件会将三者合并,后者覆盖前者。

示例:多环境 + 重写

ts
createProxyPlugin({
  env: "dev",
  targets: {
    dev: {
      v3: "http://localhost:8000/api/v3/backend",
      flow: "http://localhost:8002",
      "/ws": {
        target: "ws://localhost:3000",
        ws: { enabled: true, logConnections: true, logMessages: true }
      }
    },
    test: {
      api: { target: "https://test.example.com", path: "/api", rewrite: "/" }
    },
    prod: {
      "/api": { target: "https://api.example.com", rewrite: "/" }
    }
  },
  rewriteRules: {
    "/flow": "/"
  }
});

与 Vite 原生 proxy 配置的关系

vite-enhanced-proxy 代替了 server.proxy 的部分职责,并在内部使用 http-proxy. 若已经配置 server.proxy,建议将相关规则迁移至本插件,以获得统一的日志与中间件能力。仍需使用 server.proxy 的情况下,也可以两者并存,但请确保路径不冲突。

基于 MIT 许可证发布