gpt4 book ai didi

docker - 如何在 docker 中的节点前为 Cloud Run 设置 nginx?

转载 作者:行者123 更新时间:2023-12-02 18:07:56 25 4
gpt4 key购买 nike

我需要在需要部署在谷歌云运行中的 nodejs 应用程序前面设置反向代理 nginx。

用例
- 需要通过 nginx 提供 gzip 压缩的 Assets (我不想开销节点进行 gzip 压缩)
- 阻止小型 DDOS 攻击

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

我还需要为节点安装 PM2。

如何在 docker 中进行此设置?还有如何在部署之前配置 nginx?

提前致谢

最佳答案

I need to setup reverse proxy nginx in front of nodejs app that needto be deployed in google cloud run.


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

Use Cases - Need to serve assets gzipped via nginx (I don't want tooverhead node for gzip compression) - To block small DDOS attacks


您可以在节点应用程序或 Nginx 中执行压缩。结果是一样的。性能影响是一样的。 Nginx 不提供任何开销节省。 Nginx 在某些情况下可能更方便。
您对阻止小型 DDOS 攻击的评论。 Cloud Run 自动缩放,这意味着每个 Cloud Run 实例都将有限地暴露于 DOS。随着 DDOS 流量的增加,Cloud Run 将启动更多容器实例。在没有您事先请求的情况下,Cloud Run 将停止扩展至 1000 个实例。 Nginx 不会提供任何我能想到的减轻 DDOS 攻击的好处。

I didn't find any tutorial to setup nginx and node in cloud run.


我不知道有关 Nginx 和 Cloud Run 的特定文档。但是,您不需要一个。任何涵盖 Nginx 和 Docker 的文档都可以。如果要在与节点应用程序相同的容器中运行 Nginx,则需要编写自定义脚本来启动 Nginx 和 Node。

Also I need to install PM2 to for node.


不可能。 PM2 具有用户界面和 GUI。 Cloud Run 仅通过 HTTP 从 Cloud Run 实例公开 $PORT。

How to do this setup in docker? also how can I configure nginx beforedeploying?


网上有很多设置 Nginx 和 Docker 的教程。
下面举两个例子。互联网上有数百个例子。
  • How to run NGINX as a Docker container
  • Deploying NGINX and NGINX Plus on Docker

  • 我已经回答了你的每一个问题。现在一些建议:
  • 将 Nginx 与 Cloud Run 结合使用对 Node.js 应用程序没有任何意义。只需运行您的节点应用程序,让 Cloud Run Proxy 完成它的工作。
  • 压缩是 CPU 密集型的。 Cloud Run 专为小型、快速和紧凑的 HTTP 样式微服务而设计。您将为增加的 CPU 时间付费。如果您有需要压缩的内容,请先将其压缩并提供压缩的内容。在某些情况下,Cloud Run 中的压缩很有用和/或正确,但请查看您的设计并在可能的情况下进行优化。例如,静态内容应由 Cloud Storage 提供。

  • 只要您遵循其设计标准和目的,Cloud Run 就可以轻松处理具有出色性能和可扩展性的 Node.js 应用程序。
    要记住的关键因素:
  • 低成本,您只需为请求付费。重叠请求与一个请求的成本相同。
  • 无国籍。容器在不需要时会关闭,这意味着您必须针对重启进行设计。将状态存储在其他地方,例如数据库。
  • 仅在端口 $PORT 上提供流量,今天是 8080。
  • 公共(public)流量可以是 HTTP 或 HTTPS。从 Cloud Run 代理到容器的流量是 HTTP。
  • 自定义域名。 Cloud Run 使 URL 的 HTTPS 变得非常简单。
    更新:公共(public)端点(公共(public)流量)现在仅支持 HTTPS。
  • 关于docker - 如何在 docker 中的节点前为 Cloud Run 设置 nginx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56890126/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com