【问题标题】:Can I run both ExpressJS and Nginx at the same time?我可以同时运行 ExpressJS 和 Nginx 吗?
【发布时间】:2020-12-03 18:02:05
【问题描述】:

我已经在我的 Debian VPS 上使用 Nginx 来托管我的网站已有一段时间了,我想在同一个 Droplet 上运行 NodeJS 应用程序,所以我查看了我的选项并了解了 ExpressJS。

据我了解,它的行为类似于 Web 服务器,但在 JS 中(?)

我查看了入门教程并在我的 Windows PC 上运行了一些东西,但我想知道我是否可以在我的 Debian VPS 上同时运行 ExpressJS 服务器和 nginx 服务器,在同一个端口上,无需搞砸一切? (我不想删除我当前的网站)

我想要它,所以 Nginx 可用于任何目录,除了 ExpressJS 的目录,它类似于“var/www/html/expressapp/...”。

对不起,我缺乏知识,但我很想了解如何同时使用这两种方法

提前致谢!

【问题讨论】:

  • 目前尚不清楚您要做什么,但 NGINX 可以配置为位于任何服务器(包括 Express)前面的代理。因此,您可以对其进行配置,以便某些 URL 在 NGINX 中做一件事(例如提供静态内容),而其他 URL 则转到您的快速服务器。 var/www/html/expressapp/.. 对我来说没有多大意义,因为请求要么被转发到你的 Express 服务器,要么 NGINX 用它做其他事情。
  • NGINX 具有(在其配置中)丰富的 URL 匹配逻辑,因此您可以决定希望 NGINX 对任何 URL 做什么,例如从位置 A 提供静态内容或从位置 B 提供静态内容或转发到主机 Y 上的端口 X。这些功能都在 NGINX 配置文档中。
  • 对不起,我弄错了,我认为 nginx 是这里的 Web 服务器,但实际上我正在运行 apache,所以真正的问题是“我可以同时运行 apache 和 expressjs”吗?你给我的答案是“是的,nginx 允许你选择是使用 express 还是 apache 来选择 url”,对吗?感谢您的回复!
  • nginx 可以服务多个角色。它可以是 Web 服务器并直接提供静态内容。或者,它可以是某些 URL 的代理,并将与该 URL 模式匹配的请求转发到您的应用服务器。
  • 感谢您的帮助和解释,我搞定了 :)

标签: node.js express nginx debian


【解决方案1】:

当然可以:您只需要在 nginx 配置上设置一个上游,并将其指向您的 express 使用的端口,这样会自动将流向您的 nodejs 应用程序的流量重新路由到您的 express 服务器。

就我而言,我使用 express 来提供 api,基本上我只是将通过 /api 的所有内容指向我的节点服务器。

有人在这里做了一个很好的样本:https://gist.github.com/turtlesoupy/3072833

这里的关键元素是“上游”和代理选项。

【讨论】:

  • 谢谢!我让它工作了。这是我添加到 /etc/nginx/sites-available/default 的内容:` location /someurl { proxy_pass localhost:3000; }
  • 那么您介意接受答案吗,它可能对其他人有帮助^^
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
相关资源
最近更新 更多