proxy.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /*
  2. * @Author: code4eat awesomedema@gmail.com
  3. * @Date: 2024-04-09 18:07:34
  4. * @LastEditors: code4eat awesomedema@gmail.com
  5. * @LastEditTime: 2026-04-17 15:39:05
  6. * @FilePath: /KC-MiddlePlatform/config/proxy.ts
  7. * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  8. */
  9. const proxy: { [key: string]: any } = {
  10. dev: {
  11. // WebSocket 专用代理,避免被 /gateway 先匹配成 HTTP
  12. '/gateway/centerSys/websocket': {
  13. // 本地开发按实际网关地址转发
  14. target: 'ws://dev.kcim.cn',
  15. changeOrigin: true,
  16. ws: true,
  17. // 后端实际路径不带 /gateway 前缀
  18. // pathRewrite: { '^/gateway': '' },
  19. // 将 query 中的 token 写入 Header,后端只认 Header
  20. onProxyReq(proxyReq: any, req: any) {
  21. proxyReq.on('error', (err: any) => {
  22. console.error('WS proxyReq error:', err?.message || err);
  23. });
  24. try {
  25. const url = new URL(req.url, 'http://placeholder');
  26. const token = url.searchParams.get('token');
  27. if (token) {
  28. proxyReq.setHeader('token', token);
  29. }
  30. } catch (e) {
  31. // ignore
  32. }
  33. },
  34. onProxyReqWs(proxyReq: any, req: any) {
  35. proxyReq.on('error', (err: any) => {
  36. console.error('WS proxyReqWs error:', err?.message || err);
  37. });
  38. try {
  39. const url = new URL(req.url, 'http://placeholder');
  40. const token = url.searchParams.get('token');
  41. if (token) {
  42. proxyReq.setHeader('token', token);
  43. }
  44. } catch (e) {
  45. // ignore
  46. }
  47. },
  48. onError(err: any, req: any, res: any) {
  49. console.error('WS proxy error:', err?.message || err);
  50. try {
  51. res.writeHead(502);
  52. res.end('WS proxy error');
  53. } catch (_) { }
  54. },
  55. },
  56. '/gateway': {
  57. //target: 'http://47.96.149.190',
  58. target: 'http://120.27.235.181',
  59. //target: 'http://platform.pre.bs.qjczt.com:5000',
  60. changeOrigin: true,
  61. timeout: 30000,
  62. proxyTimeout: 30000,
  63. onProxyReq(proxyReq: any) {
  64. proxyReq.on('error', (err: any) => {
  65. console.error('Gateway proxyReq error:', err?.message || err);
  66. });
  67. },
  68. onError(err: any, req: any, res: any) {
  69. console.error('Gateway proxy error:', err?.message || err);
  70. try {
  71. res.writeHead(502);
  72. res.end('Gateway proxy error');
  73. } catch (_) { }
  74. },
  75. // pathRewrite: { '^/master': '' },
  76. },
  77. '/api': {
  78. target: 'http://120.27.235.181:8088',
  79. changeOrigin: true,
  80. timeout: 30000,
  81. proxyTimeout: 30000,
  82. onProxyReq(proxyReq: any) {
  83. proxyReq.on('error', (err: any) => {
  84. console.error('API proxyReq error:', err?.message || err);
  85. });
  86. },
  87. onError(err: any, req: any, res: any) {
  88. console.error('API proxy error:', err?.message || err);
  89. try {
  90. res.writeHead(502);
  91. res.end('API proxy error');
  92. } catch (_) { }
  93. },
  94. // 本地开发:对 /api/se 开头的请求不走代理,交由 umi mock 处理
  95. bypass: function (req: any) {
  96. if (req && req.url && req.url.startsWith('/api/se')) {
  97. return req.url;
  98. }
  99. return undefined;
  100. },
  101. },
  102. '/ai': {
  103. target: 'http://192.168.0.120:5003',
  104. //target: 'http://116.62.47.88:5003',
  105. changeOrigin: true,
  106. pathRewrite: { '^/ai': '' },
  107. selfHandleResponse: true,
  108. onProxyRes: function onProxyRes(proxyRes: any, req: any, res: any) {
  109. proxyRes.on('data', function (data: any) {
  110. res.write(data);
  111. });
  112. proxyRes.on('end', function () {
  113. res.end();
  114. });
  115. proxyRes.on('error', function (err: any) {
  116. console.error('AI ProxyRes error:', err);
  117. res.end();
  118. });
  119. res.on('error', function (err: any) {
  120. console.error('AI Res error:', err);
  121. });
  122. },
  123. onError(err: any, req: any, res: any) {
  124. console.error('AI proxy error:', err?.message || err);
  125. try {
  126. res.writeHead(502);
  127. res.end('AI proxy error');
  128. } catch (_) { }
  129. },
  130. },
  131. },
  132. mock: {
  133. '/master/': {
  134. target: 'http://localhost:8000',
  135. changeOrigin: true,
  136. pathRewrite: { '^': '' },
  137. },
  138. },
  139. };
  140. export default proxy;