首页 > 解决方案 > 带有路径的 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 仍然接受子路由有任何想法吗?

标签: restopenshiftopenshift-origin

解决方案


好的,这就是你必须做的。您必须将路径包含到 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即可


推荐阅读