【问题标题】:REST API Node port in an enterprise application企业应用程序中的 REST API 节点端口
【发布时间】:2015-11-26 10:51:42
【问题描述】:

我有一个Angular 应用程序,它与Node / Express REST API 通信。

这个API 在端口82 上运行。

我们公司将此应用程序的许可证出售给企业和更大的组织,例如BanksTelevisionConstruction 等。

这些组织中的许多组织都有严格的安全网络,有时会禁止运行我们的API 的端口,这意味着在他们的IT 部门打开此端口之前,他们无法访问内容。

在某些情况下,组织的政策是他们不会打开特定端口,这会导致销售损失,这非常糟糕!

问题是我无法更改端口,因为每个组织的端口打开和关闭都不同。

所以我的问题是如何解决这个问题?由于他们的安全系统,我注定要失去客户还是有解决办法?我在想我不是唯一一个有这个问题的人......

【问题讨论】:

  • 为什么不使用 80 端口?
  • @Hiren Apache 在端口 80 上运行
  • @Hiren 如果我更改了 apache 端口,他们将无法连接到我的网站??

标签: node.js rest port firewall


【解决方案1】:

如果我正在写这个,我会在配置文件中包含端口以及所有其他应用程序范围的定义(凭据/api 密钥等)。你的客户应该有专门的员工为你的节点应用程序运行的任何端口设置一些代理路由,你的 API 应该通过调用配置文件来引用端口(我很确定大多数node/express 文档按设计这样做)。

通过这样做,您的 API 在哪个端口上运行并不重要,由客户端定义和支持他们允许在其网络上使用的端口。

编辑:刚刚在另一个答案中看到您的评论,即您正在托管 API 并且他们正在连接到它。在这种情况下,在端口 80 上公开您的 API 会更容易(并且是更好的行业惯例)。如果您已经让 Apache 在 80 上运行,那么您需要在自己的内部代理您的 API基础设施从它运行的端口到同一端口上的端点(就像您可以让多个站点在端口 80 上运行一样,因为它们具有不同的 URL)

类似这样的:

<VirtualHost *:80>
  ...
  ServerName api.somehost.com
  ProxyPass / http://127.0.0.1:82/ Keepalive=On
  ProxyPassReverse / http://127.0.0.1:82/
  ProxyPreserveHost On
  ....
</VirtualHost>

因此,当您的客户端在您的api.somehost.com 上进行 REST 调用时,它会通过端口 80 进入您的基础架构,并被路由到在端口 82 上运行的 API。确保您已启用代理模块 (a2enmod proxy)

【讨论】:

  • 这可能会奏效,遗憾的是客户不知道如何操作,因为他们的许多安全功能都是在国外管理的,而且进行这种更改的麻烦不是他们想要的。
  • 见上文,这可能是您正在寻找的更多内容 :)
  • 如果 apache 已经在使用端口 80,我什至可以使用代理启动我的服务器
  • 好吧,您不会在端口 80 上启动 API 服务器,而是在 82 上启动它,然后您的 Apache 配置将执行内部路由,因此不会发生端口冲突
  • 为了搞清楚,我必须创建一个虚拟主机,然后使用您发布的上述设置使用 a2ensite 启用它?
【解决方案2】:

如果在您的客户的服务器上使用 Web 服务器,他们只需要在您的后端添加代理,在任何空闲端口上运行

像这样的 nginx

    location ^~ /nodeapp/ {
        proxy_pass      http://127.0.0.1:82/;
    }

所以,客户端http://website.org/nodeapp/anything的所有网址 转到您的 nodejs 实例/anything。您的应用可通过开放的 80 端口访问

如果不允许使用和更改现有 Web 服务器的配置,那么设置 nodejs 监听端口的唯一选项是 args --port 4000 并明确将该端口开放给外部网络

【讨论】:

  • 我的客户不是自托管我们公司为他们托管服务器,他们只需要连接到我们的端口。
  • 公司托管在哪里并不重要。有人需要将代理添加到 nodejs 应用程序(好方法),或者为外部网络打开端口(不安全的方法)。端口需要通过配置文件或参数设置
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多