Apache HTTP Server vs Tomcat: role, reverzní proxy a kdy je kombinovat


Publikováno:

Aktualizováno:


Články › Apache HTTP Server vs Tomcat: role, reverzní proxy a kdy je kombinovat

Stav v roce 2026 a bezpečné použití

Závěr: Apache HTTP Server je univerzální HTTP server a reverzní proxy; Tomcat je webový kontejner Java s vlastním HTTP konektorem. Nepotřebují se ze své podstaty. Kombinujte je, když proxy poskytuje konkrétní provozní výhody, jako je centralizované TLS, směrování, integrace nebo sdílená okrajová vrstva.

Co se dozvíte

  • Kde může fungovat poskytování HTTP, proxy, spouštění servletů, statické soubory, TLS a směrování.
  • Jak mod_proxy_http nebo jiný podporovaný konektor předává požadavky Tomcatu.
  • Jak se vyhnout přidání vrstvy proxy pouze proto, že starší diagram ji vždy obsahoval.

Pro koho je článek určen: Webové týmy Java se rozhodují mezi přímým vystavením Tomcatu a spravovanou architekturou reverzního proxy.

Pozice z roku 2026: Model specializace na role v původní eseji je užitečný, ale „Apache a Tomcat potřebují spolupracovat“ je příliš absolutní. Vyberte si nejmenší architekturu, která splňuje požadavky na zabezpečení, spolehlivost, směrování, pozorovatelnost a provoz, a také hranice důvěryhodnosti dokumentů a předávané hlavičky.

Bezpečnostní poznámka: Příkazy a konfigurační příklady z původního článku nebyly znovu spuštěny v současném produkčním prostředí. Před nasazením ověřte podporované verze, vytvořte zálohu a připravte postup návratu v odděleném testovacím prostředí.

Oficiální zdroje

Přehled

Následující část popisuje rozdíly mezi Apachem a Tomcatem a proč je třeba je propojit, na což jsem v začátcích nenašel uspokojivou odpověď, ani když jsem se ptal svých starších kolegů a pátral na internetu. Někdy se říká, že Apache je webový server (provádí statické zpracování) a Tomcat je servletový kontejner (provádí dynamické zpracování) (jak mi řekl jeden starší kolega, když jsem začínal), ale Tomcat má také funkce webového serveru, pokud se pozorně podíváme. Pak byste si mohli myslet, že Tomcat je vše, co potřebujete. To nakonec vede zpět k otázce, proč je třeba propojit Apache a Tomcat. Těm, kteří tak činí, bych rád vysvětlil rozdíly mezi Apachem a Tomcatem a důvody jejich vzájemné spolupráce.

Obsah

  1. Důvody pro propojení aplikací Apache a Tomcat
  2. Funkce Apache
  3. Funkce aplikace Tomcat
  4. zvážení
  5. Shrnutí

1. Důvody pro propojení aplikací Apache a Tomcat

Prvním závěrem, který je třeba učinit, je rozdíl ve specializaci rolí. Apache se specializuje na funkce webového serveru, zatímco Tomcat se specializuje na dynamické zpracování pomocí jazyka Java.

Důvodem pro napsání rozdílu ve specializaci je skutečnost, že samotný Tomcat má také funkce webového serveru. To je možná trochu extrémní, ale pokud existuje systém, ve kterém jsou propojeny Apache a Tomcat, není nemožné realizovat téměř stejný systém pouze pomocí Apache a pouze Tomcatu.

1-1. Jaké jsou rozdíly v odbornosti?

Při posuzování rozdílů ve specializaci rolí se domníváme, že je to obtížné pochopit, protože se najednou srovnává Apache a Tomcat. Snadněji to pochopíte, pokud budete uvažovat v termínech serverů Tomcat a DB. Může to znít extrémně, ale je možné vytvořit aplikaci pouze pomocí Tomcatu bez nastavení DB serveru. Můžete například spravovat informace o uživateli ve formátu xml nebo property a vytvořit aplikaci, která na základě těchto informací ověří přihlášení. Pokud se však podíváte na obecné webové systémy, ve skutečnosti většina systémů spravuje informace o uživatelích v DB a odkazuje data ze serveru Tomcat do DB. Když se zamyslíte nad tím, proč tomu tak je, zjistíte, že tímto způsobem můžete vyvíjet aplikace efektivněji.

Někdy se vysvětlují "výhody" a "nevýhody" spolupráce Apache a Tomcatu, ale tady nejde o výhody a nevýhody. Na otázku ohledně "výhod" a "nevýhod" propojení serverů Tomcat a DB by odpověděli, že jejich role se od počátku liší. Totéž platí pro Apache a Tomcat, které mají na začátku odlišné role.

1-2. Co je Apache?

Když už jsem zmínil, že se role liší, rád bych nyní vysvětlil, jaké jsou role Apache a Tomcatu.

Opět platí, že Apache je oficiálně známý jako Apache HTTP Server. Apache je webový server, ale jeho úkolem je analyzovat požadavky.

Konkrétně se jedná o.

  • Filtrování (povolení/odmítnutí požadavků) pro konkrétní IP adresy
  • Přesměrování pro konkrétní adresy URL.
  • Odmítnutí konkrétních adres URL
  • Šifrování komunikace pomocí SSL
  • Přidělování procesů konkrétním serverům na vyžádání

Výše uvedený příklad je jen jeden a existuje více funkcí, ale stručně řečeno, úlohou Apache (webového serveru) je zpracovávat požadavky přijaté od uživatelů.

Úkolem serveru Tomcat je rozhodnout, jaký druh odpovědi má být proveden na základě konkrétního požadavku. Nemělo by být špatně pochopeno, že Apache nezakazuje vytváření odpovědí. Stejně jako Tomcat spolupracuje s DB serverem a udržuje jednoduchá data (např. seznamy zpráv) na straně Tomcatu, Apache nemá problém s implementací dynamických stránek, pokud se jedná o jednoduché odpovědi. Klíčové je, co lze zvládnout co nejefektivněji a přehledně.

1-3. Co je Tomcat?

Oficiální název pro Tomcat je "Apache Tomcat". Tomcat je kontejner servletů, ale abychom jeho úlohu vysvětlili ve zkratce, je zodpovědný za dynamické zpracování na základě požadavků.

Konkrétně se jedná o.

  • Registrujte údaje na základě informací v žádosti.
  • Vytváření dynamických stránek a odpovědí na základě informací o požadavku.
  • Určete uživatele na základě informací o požadavku a vytvořte pro každého uživatele jinou odpověď.

Úkolem systému Tomcat je v podstatě vracet uživateli stránky, které nejsou pevnými stránkami.

To je další bod, který by neměl být špatně pochopen: neznamená to, že by statické stránky (např. html) neměly být umístěny v Tomcatu. Pokud je filozofií návrhu týmu spravovat veškeré html na straně Tomcatu, není problém umístit statické stránky na Tomcat. I v tomto případě je klíčové, co lze zvládnout co nejefektivněji a nejpřehledněji.

2. Funkce Apache

Rád bych vám představil některé funkce systému Apache. Apache poskytuje řadu modulů (souborů, v nichž jsou zabaleny procesy). Načtěte modul a popište požadované konfigurační hodnoty pro použití jeho funkcí. Následující část popisuje, jaké moduly jsou k dispozici.

2-1. Možnost souběžného zpracování požadavků.

Příslušným modulem je modul "mpm_prefork_module". Existují také moduly "mpm_worker_module" a "mpm_event_module", ačkoli jejich funkce jsou téměř totožné.

Nastavte následující hodnoty.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

Je-li server popsán tímto způsobem, může být při spuštění spuštěno "5" procesů a současně může být paralelně zpracováváno "5" a při velkém počtu požadavků může být paralelně zpracováváno až "250".

2-2. Přepsání adresy URL požadavku

Příslušným modulem je modul 'rewrite_module'.

Nastavte následující hodnoty.

<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Pokud je to takto uvedeno, bude v případě, že požadavek přijde na http, vrácen uživateli, aby si jej znovu vyžádal na https.

2-3. Řízení přístupu podle IP adresy

Tento modul se mírně liší od modulu, ale řídí přístup podle IP adresy.

Následující popis zabrání přístupu z jiných IP adres než "1.0.16.0/20", "1.0.64.0/18" a "1.1.64.0/18".

<Directory />
    order deny,allow
    deny from all
    allow from 1.0.16.0/20
    allow from 1.0.64.0/18
    allow from 1.1.64.0/18
</Directory>

3. Funkce aplikace Tomcat

Následující část vysvětluje funkčnost Tomcatu.

3-1. Možnost dynamického vracení webových stránek pomocí Javy.

Odbornost Tomcatu spočívá v jeho "schopnosti dynamicky vracet webové stránky pomocí jazyka Java". Obecně platí, že veškeré zpracování v jazyce Java nevytváříte sami, ale používáte je ve spojení s knihovnami jazyka Java (moduly v jazyce Apache), které vytvářejí různé organizace.

  • Dynamické generování odpovědí na základě parametrů požadavku uživatele.
  • Výstup souborů protokolu v určitém formátu.
  • Vytváření a úprava souborů aplikace Excel
  • Zjistěte, zda má soubor zip heslo.

Složitých procesů, jako je výše uvedený, lze dosáhnout jednoduše vložením knihovny a jejím voláním. Úkolem Tomcatu je usnadnit implementaci těchto složitých procesů.

4. zvážení

Vysvětlili jsme, že rozdíl mezi Apachem a Tomcatem spočívá ve "specializaci rolí", ale jak Apache (Apache HTTP Server), tak Tomcat (Apache Tomcat) jsou vytvořeny stejnou organizací Apache Software Foundation. Důvodem může být to, že Apache je napsán v jazyce C a Tomcat v Javě, což jsou různé jazyky, ale důvodem, proč nejsou spojeny do jednoho, může být to, že hrají různé role."

Domovská stránka Tomcatu byla poměrně rozsáhlá a dobře funguje i jako webový server.

http://tomcat.apache.org/

  • SSL/TLS (šifrování komunikace)
  • SSI (možnost vkládat různé HTML do HTML)
  • Rewrite (funkce pro přepisování adres URL)

Apache je vysoce výkonný webový server, ale je v něm mnoho funkcí, které se nepoužívají, takže Apache Software Foundation mohla zajistit, aby Tomcat mohl běžet samostatně bez Apache. Pokud však potřebujete podrobnou kontrolu požadavků, je stále lepší zahrnout Apache.

5. shrnutí

Jsou popsány rozdíly mezi Apachem a Tomcatem a důvody jejich vzájemné spolupráce.

Myslel jsem, že odpověď na tuto otázku je obtížně pochopitelná, protože Tomcat je plnohodnotný webový server. Je dobré se zamyslet nad spoluprací Apache a Tomcatu a mít na paměti, že funkce Tomcatu jako webového serveru není jeho hlavní funkcí (není specializovaný jako webový server).

Tím jsou shrnuty hlavní kroky a omezení, která je třeba zohlednit.