带有路径的 OpenShift 路由导致忽略子路由
OpenShift routes with path results in ignoring sub routes
我目前正在使用 OpenShift 部署 node.js-应用程序。此应用程序公开了一个 REST api.
只要我不在 Openshift 中使用路径并且路径类似于
www.app.host.com
API 工作正常。现在我想在一台主机上托管多个应用程序,因为我不想每次添加新应用程序时都必须发出证书签名请求。但是当我在 OpenShift 路由中使用路径时
www.host.com/app/
所有流量都将发送到应用程序的根路由。所以
www.host.com/app/请求/某事
仍然会导致流量最终出现在欢迎页面上。您对如何让 OpenShift 仍然接受子路径有任何想法吗?
好的,这是你必须做的。您必须将您的路径包含在 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 就可以了
我目前正在使用 OpenShift 部署 node.js-应用程序。此应用程序公开了一个 REST api.
只要我不在 Openshift 中使用路径并且路径类似于
www.app.host.com
API 工作正常。现在我想在一台主机上托管多个应用程序,因为我不想每次添加新应用程序时都必须发出证书签名请求。但是当我在 OpenShift 路由中使用路径时
www.host.com/app/
所有流量都将发送到应用程序的根路由。所以
www.host.com/app/请求/某事
仍然会导致流量最终出现在欢迎页面上。您对如何让 OpenShift 仍然接受子路径有任何想法吗?
好的,这是你必须做的。您必须将您的路径包含在 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 就可以了