Browse Source

修改Proxy配置

yingp 7 years ago
parent
commit
65c8ed017e
3 changed files with 86 additions and 21 deletions
  1. 43 2
      nuxt.config.js
  2. 21 0
      run.sh
  3. 22 19
      server.js

+ 43 - 2
nuxt.config.js

@@ -104,6 +104,47 @@ module.exports = {
     src: '~plugins/jsonp.js',
     ssr: false
   }],
-  /* TODO 暂时代理到商城测试版,之后再做出调整 */
-  proxyTable: ['/api/**', '/search/**', '/user/**', '/login/**', '/register/**', '/logout/**', '/static/**', '/vendor**', '/user**', '/trade/**', '/recommendation/**', '/store-service/**', '/basic/**', '/logout**', '/operation/**', '/help**', '/product**', '/store**', '/order/proxy**', '/report/**', '/store/**#/**', '/kdn/**', '/product/**Submit', '/admin**', '/product/**Submit/**', '/release/**', '/auth/store/**', '/produce/**', '/file**', '/rate/**', '/log/**', '/help-service/**', '/keyword/**', '/tip/**', '/UASBatchPutOnProperty**', '/UASBatchPutOnProperty/**']
+  // proxyTable: ['/api/**', '/search/**', '/user/**', '/login/**', '/register/**', '/logout/**', '/static/**', '/vendor**', '/user**', '/trade/**', '/recommendation/**', '/store-service/**', '/basic/**', '/logout**', '/operation/**', '/help**', '/product**', '/store**', '/order/proxy**', '/report/**', '/store/**#/**', '/kdn/**', '/product/**Submit', '/admin**', '/product/**Submit/**', '/release/**', '/auth/store/**', '/produce/**', '/file**', '/rate/**', '/log/**', '/help-service/**', '/keyword/**', '/tip/**', '/UASBatchPutOnProperty**', '/UASBatchPutOnProperty/**']
+  /**
+   * http-proxy configuration example: {
+   *    '/api/order/**': 'https://api-order.example.com',
+   *    '/api/product/**': 'https://api-product.example.com'
+   *   }
+   */
+  proxyTable: {
+    '/api/**': baseUrl,
+    '/search/**': baseUrl,
+    '/user/**': baseUrl,
+    '/user**': baseUrl,
+    '/login/**': baseUrl,
+    '/register/**': baseUrl,
+    '/logout/**': baseUrl,
+    '/static/**': baseUrl,
+    '/vendor**': baseUrl,
+    '/trade/**': baseUrl,
+    '/recommendation/**': baseUrl,
+    '/store-service/**': baseUrl,
+    '/basic/**': baseUrl,
+    '/logout**': baseUrl,
+    '/operation/**': baseUrl,
+    '/help**': baseUrl,
+    '/product**': baseUrl,
+    '/store**': baseUrl,
+    '/order/proxy**': baseUrl,
+    '/report/**': baseUrl,
+    '/store/**#/**': baseUrl,
+    '/kdn/**': baseUrl,
+    '/product/**Submit': baseUrl,
+    '/admin**': baseUrl,
+    '/product/**Submit/**': baseUrl,
+    '/release/**': baseUrl,
+    '/auth/store/**': baseUrl,
+    '/produce/**': baseUrl,
+    '/file**': baseUrl,
+    '/rate/**': baseUrl,
+    '/log/**': baseUrl,
+    '/help-service/**': baseUrl,
+    '/keyword/**': baseUrl,
+    '/tip/**': baseUrl
+  }
 }

+ 21 - 0
run.sh

@@ -3,7 +3,28 @@
 echo "NODE_ENV: $NODE_ENV"
 echo "BASE_URL: $BASE_URL"
 
+updateHost(){
+  in_ip = ${1}
+  in_url = ${2}
+  inner_host=`cat /etc/hosts | grep ${in_url} | awk '{print $1}'`
+  if [ ${inner_host} = ${in_ip} ];then
+    echo "${inner_host} ${in_url} ok"
+  else
+    if [ ${inner_host} != "" ];then
+      echo " change is ok "
+    else
+      inner_ip_map="${in_ip} ${in_url}"
+      echo ${inner_ip_map} >> /etc/hosts
+      if [ $? = 0 ]; then
+        echo "${inner_ip_map} to hosts success host is `cat /etc/hosts`"
+      fi
+    fi
+  fi
+}
+
 if [ "$NODE_ENV" == 'production' ]; then
+  # updateHost 10.10.0.150 api-order.usoftmall.com
+  # updateHost 10.10.0.150 api-product.usoftmall.com
   npm run build
   npm run start
 else

+ 22 - 19
server.js

@@ -5,6 +5,7 @@ const cookiejar = require('cookiejar')
 const host = process.env.HOST || '127.0.0.1'
 const port = process.env.PORT || 3000
 process.noDeprecation = true
+const url = require('url')
 
 app.set('port', port)
 
@@ -16,39 +17,41 @@ config.dev = !(process.env.NODE_ENV === 'production')
 const proxyTable = config.proxyTable
 if (proxyTable) {
   // 本地代理支持localhost、127.0.0.1等不同地址跨域
-  app.use((req, res, next, store) => {
+  app.use((req, res, next) => {
     res.header('Access-Control-Allow-Origin', '*')
     res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
     res.header('Access-Control-Allow-Headers', 'Content-Type')
     res.header('Access-Control-Allow-Credentials', 'true')
-    if (res.req.headers.referer && res.req.headers.referer.substring(res.req.headers.referer.length - 9, res.req.headers.referer.length) === '?type=erp') {
+    const refer = res.req.headers.referer
+    if (refer && url.parse(refer, true).query.type === 'erp') {
       res.cookie('type', 'erp')
     }
     next()
   })
+  const defaultOptions = {
+    target: config.env.baseUrl,
+    changeOrigin: true,
+    onProxyRes: (proxyRes) => {
+      const setCookieHeaders = proxyRes.headers['set-cookie'] || []
+      const modifiedSetCookieHeaders = setCookieHeaders
+        .map(str => new cookiejar.Cookie(str))
+        .map(cookie => {
+          cookie.path = '/'
+          return cookie
+        })
+        .map(cookie => cookie.toString())
+      proxyRes.headers['set-cookie'] = modifiedSetCookieHeaders
+    }
+  }
   if (Array.isArray(proxyTable)) {
-    app.use(proxy(proxyTable, {
-      target: config.env.baseUrl,
-      changeOrigin: true,
-      onProxyRes: (proxyRes) => {
-        const setCookieHeaders = proxyRes.headers['set-cookie'] || []
-        const modifiedSetCookieHeaders = setCookieHeaders
-          .map(str => new cookiejar.Cookie(str))
-          .map(cookie => {
-            cookie.path = '/'
-            return cookie
-          })
-          .map(cookie => cookie.toString())
-        proxyRes.headers['set-cookie'] = modifiedSetCookieHeaders
-      }
-    }))
+    app.use(proxy(proxyTable, defaultOptions))
   } else {
     Object.keys(proxyTable).forEach((context) => {
       var options = proxyTable[context]
       if (typeof options === 'string') {
-        options = { target: options }
+        options = {target: options}
       }
-      app.use(proxy(context, options))
+      app.use(proxy(context, Object.assign(defaultOptions, options)))
     })
   }
   // axios use proxy url