阿帕奇和 Nginx。 由一條鏈條相連

Apache 和 Nginx 組合在 Timeweb 中是如何實現的

對許多公司來說,Nginx + Apache + PHP 是非常典型且常見的組合,Timeweb 也不例外。 然而,準確地理解它是如何實現的可能是有趣且有用的。

阿帕奇和 Nginx。 由一條鏈條相連

當然,這種組合的使用取決於客戶的需求。 Nginx 和 Apache 都扮演著特殊的角色,各自解決特定的問題。

基本設定 阿帕奇 在 Apache 本身的設定檔中執行,客戶端站點的設定透過 .htaccess 文件。 .htaccess是一個設定文件,客戶端可以在其中獨立配置Web伺服器的規則和行為。 此設定將專門應用於他的網站。 例如,借助 Apache 功能,使用者可以在同一 PHP 版本內將運行模式從 mod_php 更改為 mod_cgi; 您可以設定重定向、SEO 最佳化、方便的 URL、PHP 的一些限制。

Nginx的 用作代理伺服器將流量重定向到 Apache,並用作 Web 伺服器來提供靜態內容。 我們還為 Nginx 開發了安全模組,使我們能夠保護使用者的數據,例如分離存取權限。

讓我們假設使用者造訪我們客戶的網站。 首先,使用者存取 Nginx,它提供靜態內容。 它立即發生。 然後,當需要載入 PHP 時,Nginx 將請求轉送給 Apache。 Apache 與 PHP 一起已經可以產生動態內容。

Timeweb 中 Apache 和 Nginx 捆綁包的功能

我們的虛擬主機為 Apache 和 Nginx 實作了 2 個主要運行方案: 共享和專用.

共享方案

此方案適用於大多數用戶。 它的特點是簡單性和資源密集度:共享方案使用更少的資源,這就是其資費更便宜的原因。 根據此方案,伺服器運行一個 Nginx(可以為所有使用者請求提供服務)和多個 Apache 實例。

共享方案長期以來一直在改進:我們逐漸糾正了缺點。 方便的是,無需修改原始程式碼即可完成。

阿帕奇和 Nginx。 由一條鏈條相連
共享方案

專用方案

Dedicated需要更多資源,因此其資費對客戶來說更貴。 在專用方案中,每個客戶端都有自己獨立的 Apache。 這裡的資源是為客戶端保留的,它們是專門分配的。 工作原理:伺服器上有多個版本的 PHP。 我們支援版本 5.3、5.4、5.6、7.1、7.2、7.3、7.4。 因此,每個版本的 PHP 都會啟動自己的 Apache。

阿帕奇和 Nginx。 由一條鏈條相連
專用方案

安全區。 在 Nginx 中設定區域

以前,對於 Nginx,我們使用了許多共享記憶體區域(區域)——每個網域一個伺服器區塊。 此設定需要大量資源,因為為每個網站建立了單獨的區域。 然而,在Nginx設定中,大多數站點都是同一類型,因此由於在模組中使用了map指令,它們可以被放置在一個區域中 ngx_http_map_模組,它允許您指定對應關係。 例如,我們有一個區域模板,必須在其中提供變數:網站路徑、PHP 版本、使用者。 這樣就加速了Nginx配置的重新讀取,也就是重新載入。

這種配置極大地節省了RAM資源並加快了Nginx的速度。

重新加載就不行了!

在共享方案中,我們無需在更改網站設定時重新載入 Apache。 以前,當客戶想要新增網域名稱或更改 PHP 版本時,需要強制重新載入 Apache,這會導致回應延遲並對網站效能產生負面影響。

我們透過建立動態配置擺脫了重新載入。 謝謝 mpm-itk (Apache 模組),每個進程都作為單獨的使用者運行,這提高了安全性等級。 此方法可讓您將有關使用者及其 document_root 的資料從 Nginx 傳輸到 Apache2。 因此,Apache 不包含網站配置,它會動態接收它們,並且不再需要重新載入。

阿帕奇和 Nginx。 由一條鏈條相連
共享架構配置

那麼 Docker 呢?

許多公司已經轉向基於容器的系統。 Timeweb 目前正在考慮這種轉變的可能性。 當然,每個決定都有利有弊。

除了不可否認的優勢之外,容器系統還為使用者提供了更少的資源。 在Timeweb中,由於所描述的託管方案,用戶在RAM上沒有限制。 它接收的資源比容器中的資源多。 此外,用戶可能載入了更多的Apache模組。

Timeweb 為大約 500 個網站提供支援。 我們承擔重大責任,不會對複雜的架構進行即時、不合理的更改。 Apache 和 Nginx 組合可靠且經過時間測試。 反過來,我們嘗試透過獨特的配置來實現最大效能。

為了高品質、快速地運行大量站點,需要使用Apache和Nginx的模板和動態配置。 它允許您輕鬆快速地管理大量類似的伺服器。

來源: www.habr.com

添加評論