【问题标题】:How to remove port from url for node application using nginx如何使用 nginx 从 url 中删除节点应用程序的端口
【发布时间】:2018-02-02 13:03:05
【问题描述】:

我的反应和角度应用程序(UI 有两个部分)正在使用 端口 3000 上的 node/express 应用程序。在 server.js(node-express 入口点)上,我动态地 使用在浏览器上处理要呈现的 UI(一次反应或角度) 快速静态功能。

之前我的应用程序在 - https://mywebsite.com:3000/ 上运行,但是 根据要求,它应该更改为 - https://mywebsite.com 我们 与 DevOps 人员一起使用“nginx 代理”处理但现在遇到 另一个问题实际上现在可以通过使用两个 URL 访问 UI https://mywebsite.com:3000/https://mywebsite.com。 我希望它应该是 只能使用 https://mywebsite.com/ 访问,无需端口。

我的服务器的 API (https://mywebsite.com:3000/api/v1 ) 可以从三个地方访问:-

1) iOS app 
2) Admin app (running differently)
3) and UI ( React.js + Angular.js)  (https://mywebsite.com)

注意 - 有没有办法通过部署过程或在节点/快速服务器级别设置来处理这个问题。我们找到了一种解决方案,即为 UI 部分创建一个单独的节点服务器,但为了降低成本,我们忽略了这种为 UI 创建另一个服务器的方法。

【问题讨论】:

    标签: node.js reactjs express nginx devops


    【解决方案1】:

    假设我的域名是https://api.aegisapi.com:3000,首先,您可以检查您的入站,表示 HTTPS 是否存在,如果不存在则为 443 添加 HTTPS,

    然后你可以运行https://api.aegisapi.com。它有效。

    【讨论】:

      【解决方案2】:

      当你像这样运行你的节点服务器时 它侦听所有接口,即可从外部访问的 0.0.0.0。

      你应该听 来自

      app.listen(3000)
      

      app.listen(3000, '127.0.0.1');
      

      此外,您还应该使用 IPTables 阻止此端口。

      【讨论】:

      • 第一点很好,但阻止来自 Iptables 的 IP 不会对 ios 设备造成问题。因为 devops 人对此有些担心。我与某人讨论,他提到“这是开发的东西.. 只需限制对公共网络上 3000 端口的访问。如果在 AWS 上......只需从公共子网中删除 3000”
      【解决方案3】:

      如果使用 AWS EC2 实例,则打开入站端口 3000 并打开面向公众的端口,例如80 或 443 从用户那里获取请求,然后当您使用 nginx 作为反向代理时,使用它将请求转发到端口 3000。

      【讨论】:

      • 如果这只能通过 nginx 来处理,那就更好了,因为我们使用的是 nginx
      • 从 nginx 是不可能的,直到端口 3000 从 ip 表和节点应用程序监听它公开可用。
      猜你喜欢
      • 1970-01-01
      • 2020-02-20
      • 2020-03-02
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      相关资源
      最近更新 更多