Sobes.tech
Intern

Czy pracowałeś z Apache HTTP Server?

sobes.tech AI

Odpowiedź od AI

Tak, pracowałem. Mam doświadczenie w konfiguracji, optymalizacji i wsparciu Apache HTTP Server w różnych infrastrukturach.

Główne obszary pracy:

  • Instalacja i podstawowa konfiguracja:
    • Kompilacja ze źródeł i instalacja z pakietów (apt, yum).
    • Edycja głównego pliku konfiguracyjnego httpd.conf (lub apache2.conf).
    • Konfiguracja portów nasłuchiwania (Listen).
  • Wirtualne hosty (Virtual Hosts):
    • Tworzenie i konfiguracja wirtualnych hostów do obsługi wielu stron na jednym serwerze.
    • Konfiguracja oparta na nazwie (Name-based Virtual Hosts) i adresie IP (IP-based Virtual Hosts).
    • Użycie dyrektyw ServerName, ServerAlias, DocumentRoot.
  • Moduły Apache (Modules):
    • Włączanie i wyłączanie modułów (np. mod_rewrite, mod_ssl, mod_proxy).
    • Konfiguracja specyficznych modułów, takich jak reguły przepisywania URL (mod_rewrite).
    • Praca z MPM (Multi-Processing Modules) — prefork, worker, event.
  • Bezpieczeństwo:
    • Konfiguracja SSL/TLS z użyciem mod_ssl i Let's Encrypt lub innych certyfikatów.
    • Ograniczenie dostępu po IP (Order, Deny, Allow).
    • Konfiguracja uwierzytelniania (Basic, Digest) z użyciem .htaccess lub plików konfiguracyjnych.
    • Ochrona przed powszechnymi atakami (np. DDoS, SQL Injection - w połączeniu z WAF).
  • Wydajność i skalowalność:
    • Optymalizacja ustawień MPM (MaxRequestWorkers, StartServers, MinSpareServers, MaxSpareServers).
    • Użycie cache (mod_cache, mod_disk_cache).
    • Integracja z FastCGI (PHP-FPM) i proxy requestów (mod_proxy, mod_proxy_http, mod_proxy_fcgi).
    • Konfiguracja kompresji (mod_deflate).
  • Logowanie i monitorowanie:
    • Konfiguracja formatów logów dostępu (LogFormat, CustomLog).
    • Analiza logów błędów (ErrorLog).
    • Integracja z systemami monitorowania (np. Prometheus Exporter, Nagios plugins).
    • Użycie mod_status do monitorowania stanu serwera i zapytań.
  • Automatyzacja i wdrażanie:
    • Pisanie playbooków Ansible do instalacji i konfiguracji Apache.
    • Użycie kontenerów Docker z Apache.

Przykład konfiguracji wirtualnego hosta:

# Przykład konfiguracji wirtualnego 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>

    # Przekierowanie 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 # Jeśli dostępny

    # Zalecane ustawienia bezpieczeństwa 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>

Istnieje również doświadczenie w porównaniu z Nginx, co pozwala na wybór optymalnego rozwiązania dla konkretnego zadania lub ich integrację (np. Apache jako backend za Nginx).