【问题标题】:How can I run an express server while also running a web portal in production?如何在生产环境中运行 web 门户的同时运行 express 服务器?
【发布时间】:2023-01-28 16:24:14
【问题描述】:

我正在使用一个 puppeteer 插件,当我需要手动解决验证码时,它会打开一个网络服务器。下面的代码在开发中有效,但我想不出一种方法让它在生产中工作。

我正在 render.com 上部署这个应用程序,据我所知,我只能听一个端口。

const app = express();
app.listen(process.env.PORT || "3000");

// I eventually get a link like this
// http://localhost:3001/?targetId=68C3007E851659A5D54CD6E023022C91
puppeteer.use(
  PortalPlugin({
    // This is a typical configuration when hosting behind a secured reverse proxy
    webPortalConfig: {
      listenOpts: {
        port: 3001,
      },
      baseUrl: "http://localhost:3001",
    },
  })
);

我已经尝试在两台服务器上设置相同的端口,但正如预期的那样,我不断收到“端口已在使用”错误。我也试过将基本 url 指向我的 render.com URL,但是当我导航到插件提供的 url 时它会超时。

【问题讨论】:

    标签: express tcp network-programming puppeteer


    【解决方案1】:

    在生产环境中运行 Express 服务器和 Web 门户的一种方法是使用反向代理。反向代理是位于 Web 服务器前面的服务器,它将传入请求定向到适当的服务器。例如,您可以设置反向代理,将所有匹配特定 URL 模式的请求转发到您的 Express 服务器,并将所有其他请求转发到您的 Web 门户。

    另一种方法是使用 Nginx 或 Apache 之类的网络服务器来处理传入的请求,并将它们代理到您的 Express 服务器和网络门户,具体取决于 URL 路径或其他条件。

    您还可以使用基于云的托管服务(如 Heroku、AWS Elastic Beanstalk 或 Google App Engine)在同一环境中部署和运行您的 Express 服务器和 Web 门户。

    也可以在同一台服务器上的不同端口上同时运行快速服务器和 Web 门户,然后使用 DNS 或负载均衡器根据所需路由将流量路由到不同的端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      相关资源
      最近更新 更多