在主要由 php 驱动的动态非静态网​​站中使用 nginx 作为反向代理服务器有什么优势?

在主要由 php 驱动的动态非静态网​​站中使用 nginx 作为反向代理服务器有什么优势?

我的问题是,当大多数内容都是通过 php 动态生成时,使用 nginx 作为反向代理有什么优势吗?

就我而言,nginx 在将静态内容缓存到缓存中并同时处理多个请求方面非常有用。

这是真的吗?或者在大多数由 php 驱动的动态内容网站中,将 nginx 作为反向代理运行还有其他优势吗?

答案1

如果您问优点,您必须将它与一些替代方案进行比较:)如果您使用 PHP,您总是需要一些网络服务器,因为 PHP 本身没有。

总体来说,Nginx 有如下很酷的功能:

  • 你提到,在 Nginx 中实现缓存的方法有很多种
  • 由于拥有大量模块,它提供了很大的灵活性,尤其是 mod rewrite 或 mod lua
  • 与 Apache 或 Zeus 网络服务器等替代方案相比,开销(内存/CPU)非常低
  • 乐于助人的社区来回答问题
  • 正在积极开发中,因此新功能不断涌现。fe spdy

答案2

nginx+php 唯一值得关注的替代方案是mod_php在 apache 中使用。以下是主要区别

  • 几乎所有 php 应用程序都假设它们在 apache 中运行,配置语法将始终以 apache 语法提供。
  • 在 apache 中,静态页面和脚本页面可以随意混合;在 nginx 中,您必须从请求本身中区分出静态文件和动态内容。因此,配置会稍微复杂一些。由于您不会提供静态内容,因此这可能不会成为问题。
  • nginx 没有与 apache 等效的进程内进程mod_php,它必须将请求代理到脚本解释器;要么 要么php-cli -b。nginxuwsgi --plugin php无法启动任何一个进程;您需要自行解决这个问题。
  • nginx 是异步的,可以轻松处理高流量和慢速连接,无需额外努力;只要 php 应用程序速度快,您几乎可以免费处理多一点的流量。在我的组织中,当我们放弃 apache 时,我们的响应能力得到了很大的提升,尽管 php-cli 进程更少线程。
  • 如果 php 工作进程崩溃(例如,当你尝试将数据附加到几 GB 的日志文件时),它可能无法通过 FastCGI 提供原因解释;普通的 CGI 没有这个问题,但需要在 nginx 端进行非常不同的配置(二级 http 服务器,启动 cgi 进程,例如 lighttpd)。

答案3

我认为这篇文章可以很好的解释优点: http://www.aosabook.org/en/nginx.html 特别是对于客户端速度较慢的情况。

相关内容