【问题标题】:How to run an Express application in a subfolder/subpath如何在子文件夹/子路径中运行 Express 应用程序
【发布时间】:2021-04-27 09:04:38
【问题描述】:

所以,我有一个非常简单的 Express.js 应用程序。我的入口点,server.js,转载如下。

const express = require('express');
const app = express();


app.get('/', (req, res) => {
    res.status(200).send({ "message": "Welcome to the application. Express JS is outputting this JSON. " });
});

app.get('/all', (req, res) => {
    res.status(200).send({ "message": "All the things. " });
});


app.listen(3000, () => {
    console.log("Server is listening on port 3000");
});

当我使用命令node server.js 运行此程序时,它运行良好,我可以通过http://localhost:3000 访问该应用程序。同样,当我将其部署到 LAN 服务器时,我可以访问其 IP 并访问应用程序,如http://192.168.100.105:3000

现在,如果我希望应用程序在http://192.168.100.105/app1 运行,该怎么办?一种方法是应用 Express 应用程序以在端口 80 上运行并重新配置所有路由以使用 app1 作为新的基本 URL,但我无权(或不能)覆盖应用程序在默认端口上运行。那么,有没有其他方法可以实现相同的目标 在端口80 上运行它?

【问题讨论】:

  • 例如使用像nginx这样的代理?

标签: javascript node.js api express


【解决方案1】:

有两种方法:

  • 让你想访问的软件在 80 端口上实际监听 80 端口(你已经排除了这个)
  • 让一些其他软件在端口 80 上侦听并将请求中继到您的软件

后者的典型方法是使用配置为反向代理的 HTTP 服务器(例如 nginx)。它可以配置为映射特定路径而不是所有内容。

您还可以使用类似 iptables 的端口转发(这可以有效地使软件侦听端口 80 以及它的真实端口)。


这些选项中的任何一个都需要足够的权限,因此,鉴于您暗示的限制,这对您来说可能是不可能的。

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多