如何在云端运行的docker中设置节点前的nginx? [英] How to setup nginx in front of node in docker for Cloud Run?

查看:18
本文介绍了如何在云端运行的docker中设置节点前的nginx?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在需要部署到Google Cloud Run中的NodeJS应用前面设置反向代理nginx。

用例 -需要为通过nginx压缩的资产提供服务(我不想为gzip压缩提供开销节点) -阻止小型DDOS攻击

我没有找到任何在云运行中设置nginx和节点的教程。

我还需要将PM2安装到For节点。

如何在docker中进行此设置?另外,如何在部署前配置nginx?

提前谢谢

推荐答案

我需要在NodeJS APP前设置反向代理nginx 部署在Google Cloud Run中。

Cloud Run已经提供了反向代理-Cloud Run Proxy。这是为Cloud Run提供负载均衡、提供自定义域、身份验证等的服务。然而,Cloud Run的设计并没有阻止您在容器内使用Nginx作为反向代理。Cloud Run的设计并没有阻止您将Nginx用作另一项Cloud Run服务的单独容器前端。注在最后一种情况下,您需要支付的费用是所需两个Cloud Run服务的两倍,一个用于Nginx服务URL,另一个用于节点应用程序。

用例-需要为通过nginx压缩的资产提供服务(我不想 GZIP压缩的开销节点)-阻止小型DDOS攻击

您既可以在您的节点应用程序中执行压缩,也可以在Nginx中执行压缩。结果是一样的。对性能的影响是相同的。Nginx不提供任何管理费用节约。Nginx在某些情况下可能更方便。

您的评论以阻止小型DDOS攻击。云运行自动伸缩,这意味着每个云运行实例将有一些有限的DOS暴露。随着DDOS流量的增加,Cloud Run会启动更多容器实例。在您没有事先请求的情况下,Cloud Run将在1000个实例停止伸缩。Nginx不会提供我能想到的任何缓解DDOS攻击的好处。

我没有找到任何在云运行中设置nginx和节点的教程。

我不知道有关于Nginx和Cloud Run的具体文档。然而,您并不需要这样的服务。任何包含Nginx和Docker的文件都可以。如果要在与节点应用程序相同的容器中运行Nginx,则需要编写一个自定义脚本以同时启动Nginx和Node。

我还需要将PM2安装到For节点。

不可能。PM2有一个用户界面和图形用户界面。Cloud Run仅从Cloud Run实例公开$Port over HTTP。

如何在docker中进行此设置?另外,在此之前如何配置nginx 部署?

Internet上有许多关于设置Nginx和Docker的教程。

下面两个示例。互联网上有成百上千的例子。

我已经回答了您的每一个问题。现在给你一些建议:

  1. 将Nginx与Cloud Run配合使用对Node.js应用程序没有任何意义。只需运行您的节点应用程序并让Cloud Run Proxy完成其工作即可。
  2. 压缩占用大量CPU资源。Cloud Run是为小型、快速和紧凑的HTTP样式微服务设计的。您将为增加的CPU时间买单。如果您有需要压缩的内容,请首先对其进行压缩,然后提供压缩后的内容。在某些情况下,Cloud Run中的压缩是有用的和/或正确的,但请查看您的设计并尽可能优化。例如,静态内容应该由云存储提供服务。

如果您遵循Node.js应用的设计标准和目的,Cloud Run可以轻松处理Node.js应用,具有出色的性能和可伸缩性。

要牢记的关键因素:

  • 费用低,只需为请求付费。重叠的请求与一个请求的成本相同。

  • 无状态。容器在不需要时关闭,这意味着您必须为重新启动进行设计。将状态存储在其他位置,如数据库。

  • 仅为端口$Port上的流量提供服务,该端口目前为8080。

  • 公共流量支持HTTP或HTTPS。从Cloud Run代理到容器的流量为HTTP。

  • 自定义域名。Cloud Run让URL的HTTPS变得非常简单。

    更新:公共终结点(公共流量)现在仅支持HTTPS。

这篇关于如何在云端运行的docker中设置节点前的nginx?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆