Почему мой сервер не может поймать зарегистрированный URL без косой черты '/' в конце? - PullRequest
0 голосов
/ 29 октября 2019

В моем приложении есть некоторые сервисы, и я обрабатываю их с помощью обратного прокси-сервера redbird . Мой обратный прокси index.js выглядит следующим образом:

import redbird from 'redbird';
import { HOST_URI = 'localhost, REVERSE_PROXY_PORT = 5470 } from './environment'; 

const proxy = redbird({ port: REVERSE_PROXY_PORT });

console.log({ HOST_URI });

proxy.register(`${HOST_URI}/sso`, `http://${HOST_URI}:8000`);  // <--
proxy.register(`${HOST_URI}/sign-in`, `http://${HOST_URI}:8050/sign-in`);
proxy.register(`${HOST_URI}/api`, `http://${HOST_URI}:4000/api`);
proxy.register(`${HOST_URI}/`, `http://${HOST_URI}:3000`);

Я указал один URL, потому что мне интересно, почему он работает так:

  1. localhost:5470/sso - отображаетмне страницу клиента. Вкладка браузера имеет заголовок http://${HOST_URI}:8000, но содержимое неверно (отображается содержимое от клиента).
  2. localhost:5470/sso/ - косая черта в конце имеет значение (отображает содержимое из sso), итогда работает как надо, но почему?

Взгляните ...

enter image description here

Не знаю, важно ли это в этом случае, но я будуОтметим, что client и SSO имеют почти одинаковые static-server.js для обслуживания статического файла.

import express from 'express';
import fs from 'fs';

const { CLIENT_PORT, NODE_ENV, HOST_URI } = process.env;

console.log('STATIC-SERVER:');
console.log({ CLIENT_PORT, NODE_ENV, HOST_URI });

const config = { CLIENT_PORT, NODE_ENV, HOST_URI };

const app = express();
app.use(express.static('./dist'));

const ejs = fs.readFileSync('./dist/index.ejs', 'utf8');

const INJECT_TAG = '<!-- ENVIRONMENT -->';

const environmentScript = config =>
  `<script>window.process = { env: ${JSON.stringify(config)} };</script>`;

const template = config => ejs.replace(INJECT_TAG, environmentScript(config));

app.get('*', (_, res) => {
  const body = template(config);
  res.send(200, body);
});

app.listen(CLIENT_PORT, () => {
  console.log('Client static server is running on Port: ' + CLIENT_PORT);
});

Весь Github-репо и запрос на извлечение для этого проекта.

...