прокси в угловой универсальный - PullRequest
0 голосов
/ 01 июля 2018

Я нахожусь на проектах, которые были сделаны с Angular Universal.

Мне нужно изменить blog.mywebsite.com на mywebsite.com/blog для SEO, я использовал proxy-config в ng start, как и в приведенном ниже коде, он работает правильно, но не работает, когда я запускаю build:ssr

нет ошибки во встроенном проекте, только после запуска с node dist / server.js show website, но я звоню mywebsite.com / mag Я перенаправляю на страницу 404, в то время как в npm start

проблем нет
  "scripts": {
   "ng": "ng",
   "build": "ng build --prod",
   "start": "ng serve -o  --proxy-config src/proxy.conf.json ",
   "extract": "ng xi18n --output-path=locale",
   "build:ssr": "npm run build:client-and-server-bundles  && npm run 
    webpack:server ",
   "serve:ssr": "node dist/server.js",
   "build:client-and-server-bundles": "ng build --prod && ng run 
     angular.io-example:server",
  "webpack:server": "webpack --config webpack.server.config.js --devServer -- 
   progress --colors"
  }, 

и это мой config-proxy-файл:

  {
    "/mag": {
      "target": {
      "host": "mag.mywebsite.com",
      "protocol": "http:",
      "port": 80
     },
     "secure": false,
     "changeOrigin": true,
     "logLevel": "info",
     "pathRewrite": {"^/mag" : ""}
  }
}

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете настроить прокси на экспресс-сервере приложения. Serving Angular Universal не будет использовать конфигурацию прокси, которую использует ng serve, поэтому он попытается вызвать относительный домен (то есть localhost и порт при локальном запуске). Ответ здесь объясняет, как добавить экспресс-прокси. Подведем итог:

В вашем файле src/server.ts добавьте

import * as proxy from 'http-proxy-middleware'

const apiProxy = proxy('/api', { target: 'http://localhost:8080' });
app.use('/api', apiProxy);

Очевидно, вы не захотите делать это при сборке для производства.

...