Маршруты OpenShift с указанием пути приводят к игнорированию подмаршрутов

В настоящее время я использую OpenShift для развертывания node.js-Application. Это приложение предоставляет REST api.

Пока я не использую путь в Openshift, а маршрут выглядит примерно так:

www.app.host.com

API работает нормально. Теперь я хочу разместить несколько приложений на одном хосте, так как я не хочу, чтобы мне приходилось делать запрос на подпись сертификата каждый раз, когда я добавляю новый. Но когда я использую путь в маршрутах OpenShift, например

www.host.com/app/

весь трафик будет отправлен на корневой маршрут приложения. Так

www.host.com/app/request/something

по-прежнему приведет к тому, что трафик попадет на страницу приветствия. У вас есть идеи, как заставить OpenShift по-прежнему принимать подмаршруты?


person relief.melone    schedule 22.05.2018    source источник
comment
Можете ли вы показать Route определение для этого с заданным путем? IOW, вывод oc get route nameofroute -o json.   -  person Graham Dumpleton    schedule 23.05.2018
comment
Обратите внимание, что маршруты на основе пути не разрешены в OpenShift Online Starter, поскольку вы не можете переопределить имя хоста, которое позволило бы вам использовать одно и то же имя хоста в разных маршрутах. Для OpenShift Online Pro или вашего собственного кластера OpenShift эта функция должна работать.   -  person Graham Dumpleton    schedule 23.05.2018
comment
ИМЯ: route.name ХОСТ / ПОРТ: host.subdom.dom.net ПУТЬ: / путь СЛУЖБЫ: services.name ПОРТ: 8080-tcp ПРЕКРАЩЕНИЕ: WILDCARD: Нет   -  person relief.melone    schedule 23.05.2018
comment
Вы уверены, что другое приложение ожидает полный путь? То есть он должен обрабатывать www.host.com/app/, а не только www.host.com. В любом случае oc describe routes должен давать вам подсказки о проблемах с конфликтующими или недопустимыми маршрутами. Ищите запрошенный хост ...   -  person ptrk    schedule 23.05.2018
comment
www.host.com/app обрабатывается должным образом. Забавно то, что независимо от того, что я отправляю после этого (даже если это сообщение или запрос получения, игнорируется), он всегда будет рассматривать каждый запрос (www.host.com/app/something/from/api) как запрос получения на www.host.com/app в корень моего приложения node.js   -  person relief.melone    schedule 23.05.2018


Ответы (1)


Хорошо, вот что тебе нужно сделать. Вы должны указать свой путь в приложении node.js.

Поэтому, если вы используете / yourapp / (обязательно включите косую черту в конце), вам придется изменить свои маршруты с

/ api / dosomething на / yourapp / api / dosomething.

В моем случае я использовал переменную среду, так как я не хотел жестко указывать путь в свое приложение. так что теперь это в основном выглядит так

var requestPath = (process.env.ROUTE_PATH || '') + '/request';
var authPath = (process.env.ROUTE_PATH || '') + '/auth';

app.use(requestPath, routesRequest);
app.use(authPath, routesAuth);

После этого просто установите для переменной среды ROUTE_PATH в развертывании значение / yourapp, и все готово.

person relief.melone    schedule 29.05.2018