为什么我们需要 nginx 来 dockerize React 应用程序?

Ale*_*lex 8 containers docker reactjs devops

我不是 React 开发人员,我一直在做一个 docker 课程,该课程使用带有节点和 nginx 的多阶段构建 Dockerfile 来 dockerize React 应用程序。为什么需要 nginx?为什么我们不能在生产中简单地使用 npm start 呢?它不是已经启动了一个服务器并公开了 React 运行的端口吗?

Nap*_*sen 9

你是对的,即使是为了生产,也没有什么能阻止你去做npm start。出于开发目的,使用 Nginx 服务器有点矫枉过正。然而,生产环境的情况有所不同。使用“适当的”网络服务器的原因有很多。这里有几点:

  1. 进行 React 代码的生产构建时的性能和混淆:为了提高性能,您应该获取npm build精简和优化的代码。这将减少应用程序的文件大小,从而减少存储、内存、处理和网络资源。结果npm build是一堆静态文件,可以从任何网络服务器提供服务。
    1. 这也会混淆您的代码,使其他人更难看到代码的用途,从而更难利用潜在的错误和弱点
  2. 基础设施的混淆:拥有一个前端网络服务器可以充当互联网的“保护层”,从外部隐藏您的基础设施有利于安全目的。
  3. 更高的性能和安全性;经过实战测试的生产 Web 服务器(例如 Nginx)具有高性能,并且内置 HTTPS 功能。开发服务器通常不会具有相同的功能,它的性能会更差,并且不会具有接近相同的安全级别。
  4. 便利性:处理生产环境可能与开发环境有很大不同。Nginx 提供内置日志记录,您可以轻松限制/允许/重定向对服务器的调用、负载平衡、缓存、A/B 测试等等。所有这些在生产中都非常重要。

我想您的课程只是设置了示例案例,这些示例也与想要创建生产就绪系统的人们相关。