Sobes.tech
Intern

Да ли сте радили са Apache HTTP Server-ом?

sobes.tech АИ

Одговор од АИ

Da, radio sam. Imam iskustvo u konfiguraciji, optimizaciji i podršci Apache HTTP Server-a u različitim infrastrukturnim okruženjima.

Glavne oblasti rada:

  • Instalacija i osnovna konfiguracija:
    • Kompajliranje iz izvornog koda i instalacija iz paketa (apt, yum).
    • Izmena glavne konfiguracione datoteke httpd.conf (ili apache2.conf).
    • Podešavanje portova za slušanje (Listen).
  • Virtuelni hostovi:
    • Kreiranje i konfiguracija virtuelnih hostova za više sajtova na jednom serveru.
    • Konfiguracija na osnovu imena (Name-based Virtual Hosts) i IP adrese (IP-based Virtual Hosts).
    • Korišćenje direktiva ServerName, ServerAlias, DocumentRoot.
  • Moduli Apache:
    • Uključivanje i isključivanje modula (npr. mod_rewrite, mod_ssl, mod_proxy).
    • Konfiguracija specifičnih modula, kao što su pravila prepisivanja URL (mod_rewrite).
    • Rad sa MPM (Multi-Processing Modules) — prefork, worker, event.
  • Bezbednost:
    • Konfiguracija SSL/TLS sa mod_ssl i Let's Encrypt ili drugim sertifikatima.
    • Ograničavanje pristupa po IP (Order, Deny, Allow).
    • Podešavanje autentifikacije (Basic, Digest) pomoću .htaccess ili konfiguracionih fajlova.
    • Zaštita od uobičajenih napada (npr. DDoS, SQL Injection - u kombinaciji sa WAF-om).
  • Performanse i skaliranje:
    • Optimizacija podešavanja MPM (MaxRequestWorkers, StartServers, MinSpareServers, MaxSpareServers).
    • Korišćenje keširanja (mod_cache, mod_disk_cache).
    • Integracija sa FastCGI (PHP-FPM) i proxy-ovanje zahteva (mod_proxy, mod_proxy_http, mod_proxy_fcgi).
    • Podešavanje kompresije (mod_deflate).
  • Logovanje i nadzor:
    • Podešavanje formata logova pristupa (LogFormat, CustomLog).
    • Analiza logova grešaka (ErrorLog).
    • Integracija sa sistemima za nadzor (npr. Prometheus Exporter, Nagios plugins).
    • Korišćenje mod_status za nadzor stanja servera i zahteva.
  • Automatizacija i implementacija:
    • Pisanje Ansible playbook-ova za instalaciju i konfiguraciju Apache-a.
    • Korišćenje Docker kontejnera sa Apache-om.

Primer konfiguracije virtuelnog hosta:

# Primer konfiguracije virtuelnog 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>

    # Preusmeravanje 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 # Ako postoji

    # Preporučene sigurnosne SSL postavke
    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>

Имам и опит с Nginx, което позволява избор на най-оптималното решение за конкретна задача или тяхната интеграция (например, Apache като бекенд зад Nginx).