Как подключить back-end к front-end с помощью ngnix в Kubernetes - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть фоновая служба, развернутая в Kubernetes (на http://purser.default.svc.cluster.local:3030) и внешнее угловое приложение 6 с nginx.conf как

upstream purser {
  server purser.default.svc.cluster.local:3030;
}

server {
  listen 4200;

  location / {
   proxy_pass http://purser;
   root /usr/share/nginx/html/appDApp;
   index index.html index.htm;
   try_files $uri $uri/ /index.html =404;
  }
}

В угловом коде, который мы используем http.get('http://purser.default.svc.cluster.local:3030', {observe: 'body', responseType: 'json'})

Case1: с proxy_pass, установленным в nginx.conf, когда мы обращаемся к сервису пользовательского интерфейса, он перенаправляется на бэкэнд и выдает json вывод напрямую из бэк-энда.

Case2: Без proxy_pass, когда мы обращаемся к сервису переднего плана, он отображает пользовательский интерфейс, но данные от бэкэнда не поступают, т. Е. Браузер не может понять http://purser.default.svc.cluster.local:3030

enter image description here

1 Ответ

0 голосов
/ 26 февраля 2019

Решил, используя это nginx.conf

upstream purser {
  server purser.default.svc.cluster.local:3030;
}

server {
  listen 4200;

  location /api {
    proxy_pass http://purser;
  }

  location / {
    root /usr/share/nginx/html/purser;
    index index.html index.htm;
    try_files $uri $uri/ /index.html =404;
  }
} 

и вызвав бэкэнд из внешнего интерфейса, используя BACKEND_URL = window.location.protocol + '//' + window.location.host + '/api/'

Объяснение: Фронтенд, когда ему требуются данные от внутренних вызововСам по пути /api, nginx находит этот путь и в соответствии с конфигурацией направляет его в бэкэнд-сервис kubernetes purser.default.svc.cluster.local:3030, используя proxy_pass

...