Nginx 作为 Apache 前端的反向代理

Nginx 作为 Apache 前端的反向代理

当前设置单个 CentOS 6 VPS,6G 内存,通过 FastCGI 运行 apache 2.2、mariadb 和 PHP。服务器主要有 wordpress 网站,但也有一些其他基于 PHP 的网站。目前我们没有对任何网站使用 HTTPS,但计划在基于 PHP 的网站上添加它以进行身份​​验证。

  1. 在同一物理服务器上的 apache + FastCGI 前面添加 Nginx 作为静态内容的反向代理(带或不带缓存)有什么好处吗?Apache 没有加载 mod_php,因此它已经可以非常快速地提供静态服务。
    1a.将 apache 保持在中间并保持 apache-php 与 FastCGI 的关系有哪些可能的优势。
    1b. 如果我们将 Apache-FastCGI 改为 Apache-mod_php,会有什么好处吗?由于 apache 目前的唯一任务是提供动态内容,那么 mod_php 是否会提高性能?与 Apache-FstCGI 一样,apache 必须请求单独的进程 (FastCGI) 来解析 php,而在 mod_php 中,apache 进程可以直接解析 php。
    1c.哪个服务器应该处理 SSL 内容?
  2. 如果中间去掉apache,Nginx直接使用php-fpm来处理动态内容,会不会有什么优势呢?
  3. 我们正在考虑获取 CloudFlare 免费计划来添加 CDN,那么如果前面有 CloudFlare,添加 nginx 是否有意义?

答案1

1) 是的,主要是当 apache 处理慢速 HTTP 客户端时:apache 的设计方式是,其子进程会阻塞,直到它为一个客户端提供服务,因此无法为其他客户端提供服务。因此,如果您有大量客户端,apache 子进程将堆积起来,消耗内存/CPU,并可能达到子进程上限,从而使这种情况成为 DoS。

1a)我没有看到。

1b)是的,php 模块在设计上要快得多。但这种速度只体现在数学上,而不是文件操作上。所以我建议摆脱 apache,使用 nginx + FastCGI。

1c)其实没关系,但我认为这应该是链中的第一个服务器,因为它更方便。

2) 是的。速度(使用任何类型的客户端)、静态文件操作、缓存、更少的内存消耗。我敢打赌,您无需任何基准测试工具就能看到差异。

3) 我想说,我认为没有必要使用 CloudFlare CDN。如果你真的需要它 - 你早就摆脱了 apache。既然你没有 - 这意味着你的网络服务器负载很低。但如果你坚持回答这个问题 - 我表示怀疑。如果你对现在的情况感到满意,我怀疑真的有必要做些什么。我这样说没有任何讽刺意味。

相关内容