Sobes.tech
Intern

Ar dirbote su Apache HTTP Server?

sobes.tech AI

Atsakymas iš AI

Taip, dirbau. Turiu patirties su Apache HTTP Server konfigūravimu, optimizavimu ir palaikymu įvairiose infrastruktūrose.

Pagrindinės darbo sritys:

  • Įdiegimas ir pagrindinė konfigūracija:
    • Kodo kompiliavimas iš šaltinio ir diegimas iš paketų (apt, yum).
    • Pagrindinio konfigūracijos failo httpd.conf (arba apache2.conf) redagavimas.
    • Prievadų nustatymas (Listen).
  • Virtualūs hostai (Virtual Hosts):
    • Kelių svetainių talpinimas viename serveryje naudojant virtualius hostus.
    • Konfigūracija pagal vardą (Name-based Virtual Hosts) ir IP adresą (IP-based Virtual Hosts).
    • Naudojant ServerName, ServerAlias, DocumentRoot direktivas.
  • Apache moduliai (Modules):
    • Modulų įjungimas ir išjungimas (mod_rewrite, mod_ssl, mod_proxy).
    • Konfigūruojant specifinius modulius, pvz., URL perrašymo taisykles (mod_rewrite).
    • Darbas su MPM (Multi-Processing Modules) — prefork, worker, event.
  • Saugumas:
    • SSL/TLS konfigūracija naudojant mod_ssl ir Let's Encrypt ar kitus sertifikatus.
    • Prieigos apribojimas pagal IP (Order, Deny, Allow).
    • Autentifikacijos nustatymai (Basic, Digest) naudojant .htaccess ar konfigūracijos failus.
    • Apsauga nuo dažniausiai pasitaikančių atakų (pvz., DDoS, SQL Injection) kartu su WAF.
  • Veikimas ir mastelio keitimas:
    • MPM nustatymų optimizavimas (MaxRequestWorkers, StartServers, MinSpareServers, MaxSpareServers).
    • Talpyklos naudojimas (mod_cache, mod_disk_cache).
    • FastCGI (PHP-FPM) integracija ir užklausų proxy (mod_proxy, mod_proxy_http, mod_proxy_fcgi).
    • Suspaudimo nustatymai (mod_deflate).
  • Žurnalavimas ir stebėjimas:
    • Prieigos žurnalų formatų nustatymas (LogFormat, CustomLog).
    • Klaidos žurnalų analizė (ErrorLog).
    • Integracija su stebėjimo sistemomis (pvz., Prometheus Exporter, Nagios įskiepiai).
    • mod_status naudojimas serverio ir užklausų būsenos stebėjimui.
  • Automatizavimas ir diegimas:
    • Ansible playbook'ų rašymas Apache diegimui ir konfigūravimui.
    • Docker konteinerių naudojimas.

Pavyzdinė virtualaus hosto konfigūracija:

# Virtualaus hosto konfigūracijos pavyzdys
<VirtualHost *:80>
    ServerName pavyzdys.lt
    ServerAlias www.pavyzdys.lt
    DocumentRoot /var/www/pavyzdys.lt/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

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

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

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

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

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/pavyzdys.lt.crt
    SSLCertificateKeyFile /etc/ssl/private/pavyzdys.lt.key
    SSLCertificateChainFile /etc/ssl/certs/pavyzdys.lt.ca-bundle # Jei yra

    # SSL saugumo nustatymai
    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>

Lyginant su Nginx, taip pat turiu patirties, kas leidžia pasirinkti optimalų sprendimą konkrečiam uždaviniui arba juos integruoti (pavyzdžiui, Apache kaip backend'as už Nginx).