Hogyan valósul meg az Apache és Nginx összekapcsolása a Timeweben
Sok vállalat számára az Nginx + Apache + PHP egy nagyon tipikus és elterjedt kombináció, és a Timeweb sem volt kivétel. Azonban érdekes és hasznos lehet megérteni, pontosan hogyan is valósul meg ez.

Ennek a kombinációnak a használata természetesen ügyfeleink szükségleteit tükrözi. Az Nginx és az Apache különleges szerepet játszik, mindkettő egy-egy feladatot old meg.
Alapvető beállítások Apache az Apache konfigurációs fájljaiban történnek, míg az ügyféloldali webhelyek beállításai a .htaccess fájlon keresztül. .htaccess egy konfigurációs fájl, amelyben az ügyfél saját maga beállíthatja a webkiszolgáló szabályait és viselkedését. Ez a beállítás kifejezetten az ő webhelyére vonatkozik. Például az Apache funkciója lehetővé teszi a felhasználók számára, hogy egy PHP verzión belül módosítsák a működési módot mod_php-ről mod_cgi-re; beállíthatóak átirányítások, SEO optimalizálás, kényelmes URL-ek, valamint bizonyos PHP határértékek.
Nginx proxy-kiszolgálóként működik a forgalom Apache-ra való átirányításához, és webszerver statikus tartalom kiszolgálására. Az Nginx-hez biztonsági modulokat is kifejlesztettünk, amelyek lehetővé teszik az ügyfeleink adatainak védelmét, például a hozzáférési jogok elkülönítését.
Képzeljük el, hogy egy felhasználó belép egy ügyfelünk webhelyére. Először a felhasználó az Nginx-re érkezik, amely statikus tartalmat szolgáltat. Ez azonnal megtörténik. Ezután, amikor a PHP betöltése következik, az Nginx átirányítja a kérést az Apache-ra. Az Apache és a PHP már generálja a dinamikus tartalmat.
Az Apache és Nginx Timeweb-i kombinációjának sajátosságai
A virtuális hosztolásunkon 2 fő működési séma valósult meg Apache és Nginx között: Megosztott és Dedikált.
A Megosztott séma
Ez a séma a legtöbb felhasználónak készült. Egyszerűsége és erőforrás-igénye jellemzi: a Megosztott séma kevesebb erőforrást használ, ezért tarifája is olcsóbb. E séma szerint egy Nginx fut a szerveren, amely lehetővé teszi minden felhasználói kérés kiszolgálását, és több Apache példány.
A Megosztott séma sokáig fejlődött: fokozatosan javítottuk a hibákat. Kényelmes, hogy ezt a kiindulási kód módosítása nélkül is meg lehet valósítani.

Megosztott séma
Dedikált séma
A Dedicated server requires more resources, which is why its plan is more expensive for clients. In the Dedicated scheme, each client has their own separate Apache instance. Resources are reserved exclusively for the client. Here's how it works: the server has several PHP versions. We support versions 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, and 7.4. Thus, a separate Apache instance runs for each PHP version.

Dedicated scheme
Safe zone. Configuring zones in Nginx
Previously, we used many shared memory zones (zone) for Nginx — one server block per domain. This setup requires a lot of resources, as a separate zone is created for each site. However, most sites have similar settings, so they can be grouped into one zone by using the map directives in the ngx_http_map_module, which allow for defining mappings. For instance, we have a zone template that needs to include variables: the path to the site, the PHP version, and the user. This way, it speeds up the reloading of Nginx configuration.
Such configuration significantly saved resources and improved Nginx performance.
Reload will not succeed!
In the Shared scheme, we eliminated the need for Apache reloads when changing site settings. Previously, when a client wanted to add a domain or change the PHP version, an Apache reload was mandatory, which caused response delays and negatively affected site performance.
We removed reloads by creating dynamic configurations. Thanks to (an Apache module), each process runs under a separate user, enhancing security. This method allows passing user data and their document_root from Nginx to Apache2. Thus, Apache does not hold the site configurations, but receives them dynamically, eliminating the need for reloads.

Configuration of the Shared scheme
What about Docker?
Many companies have switched to container-based systems. Timeweb is currently considering such a transition. Naturally, each solution has its pros and cons.
A konténeres rendszer kétségtelen előnyei mellett a felhasználó kevesebb erőforrást kap. A Timeweb-nél, a leírt hoszting munkarendnek köszönhetően, a felhasználónak nincsen korlátozása a memóriára. Több erőforrást kap, mint a konténerben. Ezen kívül a felhasználó több Apache modult is betölthet.
A Timeweb körülbelül 500 000 webhely működtetését biztosítja. Nagy felelősséget vállalunk, és nem hajtunk végre azonnali, indokolatlan változtatásokat a bonyolult architektúrában. Az Apache & Nginx összekapcsolása megbízható és időben bevált. Mi is arra törekszünk, hogy maximalizáljuk a teljesítményt egyedi konfigurációinkkal.
A sok webhely gyors és színvonalas működése érdekében szükséges az Apache és Nginx sablonos és dinamikus konfigurációjának használata. Ez lehetővé teszi a hasonló szerverek egyszerű és gyors adminisztrálását.
Forrás: habr.com
