Apache-2.2

Nginx 作為 Apache 前面的反向代理

  • January 25, 2016

目前設置具有 6G 記憶體的單 CentOS 6 VPS,通過 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)是的,主要是當 apache 處理慢速 HTTP 客戶端時:apache 的設計方式是當它的子阻塞直到他為一個客戶端提供服務,因此它無法為其他客戶端提供服務。因此,如果您有很多客戶端,則 apache 子級將堆疊,消耗記憶體/CPU 並可能達到子級上限,從而使這種情況成為 DoS。

**1a)**我沒有看到。

**1b)**是的,php 模組在設計上要快得多。但是這個速度只在數學中可見,在文件操作中是看不到的。所以我建議擺脫 apache 並使用 nginx + FastCGI。

**1c)**沒關係,但是我想這應該是鏈中的第一個伺服器,因為它更方便。

  1. 是的。速度(使用任何類型的客戶端)、靜態文件操作、記憶體、更少的記憶體消耗。我敢打賭,您會在沒有任何基準測試工具的情況下看到差異。

  2. 我認為沒有必要使用 CloudFlare CDN。如果你真的需要它——你已經擺脫了 apache。既然你沒有 - 這意味著你的網路伺服器上的負載很低。但如果你堅持回答這個問題 - 我懷疑。如果您對現在的情況感到滿意,我懷疑是否真的需要做某事。我這樣說,沒有任何諷刺。

引用自:https://serverfault.com/questions/751524