如何在云端运行的docker中设置节点前的nginx? [英] How to setup nginx in front of node in docker for Cloud Run?
问题描述
我需要在需要部署到Google Cloud Run中的NodeJS应用前面设置反向代理nginx。
用例 -需要为通过nginx压缩的资产提供服务(我不想为gzip压缩提供开销节点) -阻止小型DDOS攻击
我没有找到任何在云运行中设置nginx和节点的教程。
我还需要将PM2安装到For节点。
如何在docker中进行此设置?另外,如何在部署前配置nginx?
提前谢谢
推荐答案
Cloud Run已经提供了反向代理-Cloud Run Proxy。这是为Cloud Run提供负载均衡、提供自定义域、身份验证等的服务。然而,Cloud Run的设计并没有阻止您在容器内使用Nginx作为反向代理。Cloud Run的设计并没有阻止您将Nginx用作另一项Cloud Run服务的单独容器前端。注在最后一种情况下,您需要支付的费用是所需两个Cloud Run服务的两倍,一个用于Nginx服务URL,另一个用于节点应用程序。我需要在NodeJS APP前设置反向代理nginx 部署在Google Cloud Run中。
用例-需要为通过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的教程。
下面两个示例。互联网上有成百上千的例子。
我已经回答了您的每一个问题。现在给你一些建议:
- 将Nginx与Cloud Run配合使用对Node.js应用程序没有任何意义。只需运行您的节点应用程序并让Cloud Run Proxy完成其工作即可。
- 压缩占用大量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屋!