GLPI sa vo väčšine distribúcií dodáva s Apache ako default web server. Pre jednu internú inštanciu to stačí, ale väčšina produkčných nasadení končí s GLPI za reverzným proxy — pre TLS termination, viacero hostnameov, security headers a konsolidáciu s ďalšími službami na tom istom hoste. Tento článok je o funkčnej konfigurácii dvoch najbežnejších volieb: Nginx a Caddy.
Prečo vôbec reverzný proxy
Otázky „naozaj to potrebujem" a „čo to skutočne rieši" stoja za odpoveď hneď na úvod:
- TLS termination — terminovanie HTTPS na proxy znamená, že GLPI PHP/Apache vrstva môže lokálne hovoriť plain HTTP. Obnova certifikátu sa rieši na jednom mieste.
- Hostname routing — jeden server hostuje
glpi.firma.sk,monitoring.firma.sk,wiki.firma.sk. Proxy smeruje podľa Host hlavičky. - Security headers — HSTS, CSP, X-Frame-Options, Referrer-Policy sa pridajú na proxy bez zmeny GLPI PHP zdroja.
- Cachovanie statických zdrojov — JS, CSS, obrázky cachované na proxy znižujú záťaž PHP backendu.
- Mitigácia bot/abuse — rate limiting, IP allowlists pre admin cesty, základné WAF pravidlá patria do proxy vrstvy.
Konfigurácia Nginx
Nginx je heavyweight voľba — robustný, široko nasadený, dobre pochopený. Funkčná konfigurácia pre /etc/nginx/sites-available/glpi.conf:
server {
listen 80;
server_name glpi.firma.sk;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name glpi.firma.sk;
ssl_certificate /etc/letsencrypt/live/glpi.firma.sk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/glpi.firma.sk/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# Security headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
client_max_body_size 100M; # uploady príloh GLPI
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_read_timeout 300s;
}
# Statické zdroje agresívne cachované
location ~* \.(js|css|png|jpg|svg|woff2)$ {
proxy_pass http://127.0.0.1:8080;
proxy_cache_valid 200 7d;
add_header Cache-Control "public, max-age=604800";
}
}
Lokálny Apache (alebo PHP-FPM) počúva na 127.0.0.1:8080; navonok je vystavený iba Nginx na 80/443.
Konfigurácia Caddy
Caddy je jednoduchšia voľba — automatický Let's Encrypt, sensible defaults, jeden krátky config súbor. Ten istý scenár v /etc/caddy/Caddyfile:
glpi.firma.sk {
reverse_proxy 127.0.0.1:8080 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-Proto https
}
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Frame-Options "SAMEORIGIN"
X-Content-Type-Options "nosniff"
Referrer-Policy "strict-origin-when-cross-origin"
}
request_body {
max_size 100MB
}
@static {
path *.js *.css *.png *.jpg *.svg *.woff2
}
header @static Cache-Control "public, max-age=604800"
}
Caddy automaticky provisionuje a obnovuje TLS certifikát pri prvom requeste — žiadny separátny certbot proces, žiadny manuálny renewal cron. Pre väčšinu GLPI nasadení to stačí; siahnete po Nginx-e keď potrebujete jeho granulárnejšie tuning možnosti alebo už ho prevádzkujete pre iné služby.
Čo zmeniť v samotnom GLPI
Za reverzným proxy GLPI vidí request ako prichádzajúci z 127.0.0.1, nie z pôvodnej IP klienta. Aby audit logy a rate limiting fungovali správne:
- V Setup → General → System → Trusted Proxies pridajte
127.0.0.1(alebo IP proxy). - GLPI potom dôveruje
X-Forwarded-Forhlavičke pre atribúciu IP klienta. - Ak GLPI URL config interne používa
http://, aktualizujte Setup → General → URL of the application na verejnýhttps://glpi.firma.sk. Toto ovplyvňuje e-mailové notifikácie, password-reset linky a OG obrázky.
Zabudnutie kroku 3 je častý gotcha — e-maily idú s http:// linkmi na localhost, ktoré vyzerajú ako phishing.
Časté pitfalls
- Mixed content varovania — ak GLPI URL je nastavená na
http://ale proxy obsluhujehttps://, prehliadače upozorňujú pri každej stránke. Opravte URL nastavenie. - Veľké uploady zlyhávajú — proxy aj PHP potrebujú zvýšiť
client_max_body_size/upload_max_filesize. 100M je rozumné pre prílohy GLPI. - Dlho bežiaci cron cez API zasahuje proxy timeout — nastavte
proxy_read_timeout 300spre API cestu alebo spúšťajte cron cez CLI priamo na boxe. - Security headers konfliktia s iframe embed — ak embedujete GLPI do iného interného portálu,
X-Frame-Options: SAMEORIGINmôže potrebovať stať saALLOW-FROMalebo byť nahradený CSPframe-ancestors.
Ako medzi nimi vybrať
Caddy zvoľte ak začínate od nuly, chcete minimálnu konfiguráciu a nemáte už existujúcu Nginx skill base. Nginx zvoľte ak ho už prevádzkujete pre iné služby, potrebujete granulárny tuning alebo chcete zdieľať patterny medzi nasadeniami. Obidva slúžia GLPI dobre; voľba je hlavne o tom, čo zapadá do existujúcich operations vášho tímu. Pre širší obraz GLPI deployment topológie pozri prehľad GLPI SaaS / hostingu.