Sobes.tech
Intern

Pracovali ste s Apache HTTP Server?

sobes.tech AI

Odpoveď od AI

Áno, pracoval som. Mám skúsenosti s nastavovaním, optimalizáciou a podporou Apache HTTP Server v rôznych infraštruktúrach.

Hlavné oblasti práce:

  • Inštalácia a základná konfigurácia:
    • Kompilácia zo zdrojových kódov a inštalácia z balíkov (apt, yum).
    • Úprava hlavného konfiguračného súboru httpd.conf (alebo apache2.conf).
    • Nastavenie portov na počúvanie (Listen).
  • Virtuálne hosty (Virtual Hosts):
    • Vytváranie a konfigurácia virtuálnych hostov pre umiestnenie viacerých stránok na jednom serveri.
    • Konfigurácia na základe mena (Name-based Virtual Hosts) a IP adresy (IP-based Virtual Hosts).
    • Použitie direktív ServerName, ServerAlias, DocumentRoot.
  • Moduly Apache (Modules):
    • Zapnutie a vypnutie modulov (napríklad mod_rewrite, mod_ssl, mod_proxy).
    • Konfigurácia špecifických modulov, napríklad pravidiel pre prepis URL (mod_rewrite).
    • Práca s MPM (Multi-Processing Modules) — prefork, worker, event.
  • Bezpečnosť:
    • Konfigurácia SSL/TLS s použitím mod_ssl a Let's Encrypt alebo iných certifikátov.
    • Obmedzenie prístupu podľa IP (Order, Deny, Allow).
    • Konfigurácia autentifikácie (Basic, Digest) s použitím .htaccess alebo konfiguračných súborov.
    • Ochrana pred bežnými útokmi (napríklad DDoS, SQL Injection - v spojení s WAF).
  • Výkon a škálovanie:
    • Optimalizácia nastavení MPM (MaxRequestWorkers, StartServers, MinSpareServers, MaxSpareServers).
    • Použitie cache (mod_cache, mod_disk_cache).
    • Integrácia s FastCGI (PHP-FPM) a proxy požiadaviek (mod_proxy, mod_proxy_http, mod_proxy_fcgi).
    • Nastavenie kompresie (mod_deflate).
  • Logovanie a monitoring:
    • Nastavenie formátov logov prístupu (LogFormat, CustomLog).
    • Analýza chybových logov (ErrorLog).
    • Integrácia s monitorovacími systémami (napríklad, Prometheus Exporter, Nagios plugins).
    • Použitie mod_status na monitorovanie stavu servera a požiadaviek.
  • Automatizácia a nasadenie:
    • Písanie Ansible playbookov na inštaláciu a konfiguráciu Apache.
    • Použitie Docker kontajnerov s Apache.

Príklad konfigurácie virtuálneho hosta:

# Príklad konfigurácie virtuálneho hosta
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # Presmerovanie na HTTPS
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.key
    SSLCertificateChainFile /etc/ssl/certs/example.com.ca-bundle # Ak je

    # Odporúčané bezpečnostné nastavenia SSL
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA
    SSLHonorCipherOrder on
    SSLSessionTickets off
    SSLCompression off

</VirtualHost>

S porovnaním s Nginx mám tiež skúsenosti, čo umožňuje vybrať optimálne riešenie pre konkrétnu úlohu alebo ich integrovať (napríklad Apache ako backend za Nginx).