带路径的 OpenShift 路由会导致忽略子路由



我目前正在使用OpenShift来执行节点.js-Application。此应用程序公开 REST API。

只要我不在 Openshift 中使用路径并且路线是这样的

www.app.host.com

该 API 工作正常。现在,我想在一个主机上托管多个应用程序,因为我不想每次添加新应用程序时都必须发出证书签名请求。但是当我在 OpenShift 路由中使用路径时,例如

www.host.com/app/

所有 trafic 都将发送到应用根路由。所以

www.host.com/app/request/something

仍然会导致流量最终出现在欢迎页面上。你有什么想法如何让OpenShift仍然接受子路由吗?

好的,这是你必须做的。您必须将路径包含在节点.js应用程序中。

因此,如果您使用的是/yourapp/(请务必在末尾包含斜杠(,则必须将路由从

/api/dosomethingto/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,您就可以开始了