Nginx v lastnem repozitoriju AlmaLinux je stabilen, a ne najnovejši: v AlmaLinux 10 je bila v času preizkusa v njem različica 1.26.3. Razvijalci Nginx (nginx.org) vzdržujejo lasten repozitorij za sisteme na osnovi Red Hat, z dvema vejama:
- stable: stabilna veja, dobiva le popravke napak (v času preizkusa 1.30.6);
- mainline: razvojna veja, vanjo najprej pridejo nove funkcije in popravki napak (v času preizkusa 1.31.8).
Razvijalci Nginx sami priporočajo vejo mainline za splošno uporabo: posodablja se redno, v majhnih korakih, in tudi popravki napak se v njej pojavijo prej. Veja stable je dobra izbira, če želiš čim redkejše spremembe.
Korake smo oktobra 2026 preizkusili v sistemu AlmaLinux 10.2; v AlmaLinux 9 delujejo enako. Ukaze zaganjaj kot uporabnik root ali s sudo.
1. Nastavitev repozitorija
Ustvari datoteko /etc/yum.repos.d/nginx.repo (na primer sudo nano /etc/yum.repos.d/nginx.repo) s to vsebino:
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
centos v URL-ju ni napaka: nginx.org pod tem imenom ponuja pakete za sisteme, združljive z Red Hat, $releasever pa v AlmaLinux da glavno različico (9 ali 10). Lastni opis nginx.org navaja naslov http://; v preizkusu je deloval tudi https://, ki ga priporočamo. Zaradi gpgcheck=1 dnf v obeh primerih pakete preveri po podpisu. module_hotfixes=true je pomemben v AlmaLinux 9: če je tam vklopljen sistemski modul nginx (dnf module list nginx), bi brez tega modul zakril pakete repozitorija.
2. Vklop veje mainline
sudo dnf config-manager --set-enabled nginx-mainline
S tem sta vklopljeni obe veji, dnf pa izbere višjo različico, torej mainline. Če želiš vejo stable, ta korak izpusti.
Razpoložljive različice:
dnf list --showduplicates nginx
3. Namestitev
sudo dnf install nginx
Ob prvi namestitvi dnf zahteva uvoz podpisnih ključev nginx.org. V preizkusu je z naslova https://nginx.org/keys/nginx_signing.key prenesel tri ključe s temi prstnimi odtisi:
8540 A6F1 8833 A80E 9C16 53A4 2FD2 1310 B49F 6B46
573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
9E9B E90E ACBC DE69 FE9B 204C BCDC D8A3 8D88 A2B3
Primerjaj jih s prstnimi odtisi, objavljenimi na strani nginx.org o paketih za Linux, in če se ujemajo, jih sprejmi (y).
4. Zagon in preverjanje
sudo systemctl enable --now nginx
nginx -v
curl -sI http://localhost | head -2
nginx version: nginx/1.31.8
HTTP/1.1 200 OK
Server: nginx/1.31.8
Če na strežniku teče firewalld, odpri spletna vrata (sudo firewall-cmd --permanent --add-service=http --add-service=https, nato sudo firewall-cmd --reload), glej: Kako nastavim požarni zid na svojem VPS?
Paket nginx.org je preveden s podporo za HTTP/2 in HTTP/3 (QUIC); nastavitve prevajanja izpiše nginx -V (--with-http_v2_module, --with-http_v3_module).
Če je Nginx iz AlmaLinux že nameščen
Če na strežniku teče Nginx, nameščen iz repozitorija AppStream, ga dnf upgrade nginx tudi po nastavitvi repozitorija ne zamenja, temveč se ustavi z napako:
Error: Transaction test error:
file /etc/nginx/nginx.conf from install of nginx-2:1.31.8-1.el10.ngx.aarch64 conflicts with file from package nginx-core-2:1.26.3-6.el10_2.7.aarch64
Paketa sta drugače zgrajena (Nginx iz AlmaLinux je razdeljen na paketa nginx in nginx-core), zato je treba starega odstraniti. Vrstni red:
sudo cp -a /etc/nginx /root/nginx-mentes
sudo dnf remove nginx nginx-core
sudo dnf install nginx
sudo systemctl enable --now nginx
Prva vrstica shrani celotno nastavitev: odstranitev izbriše nespremenjene konfiguracijske datoteke (na primer osnovni nginx.conf), paket nginx.org pa namesto njih prinese svoje. Lastne datoteke .conf v imeniku conf.d so v preizkusu ostale na mestu, a jih pred preverjanjem primerjaj z varnostno kopijo. Paket nginx-filesystem ostane na računalniku, od njega je odvisen paket PHP-FPM.
Razlike v primerjavi z Nginx iz AlmaLinux
- Mesto navideznih gostiteljev je enako: datoteke
*.confimenika/etc/nginx/conf.d/. Z repozitorijem pridedefault.conf, ki streže osnovno stran z imenomlocalhost. - Storitev teče z uporabnikom
nginx, število delavskih procesov jeworker_processes auto;, torej eden na procesorsko jedro. - Branja
/etc/nginx/default.d/ni. Paketphp-fpmiz AlmaLinux sem postavi nastavitev PHP (php.conf), vendarnginx.confiz nginx.org tega imenika ne bere, zato moraš PHP povezati sam v vsakem blokuserver(glej spodaj). - S SELinuxom sodeluje: datoteke pod
/var/wwwje stregel brez težav in se je tudi po ponovnem zagonu strežnika zagnal sam (oznaka/run/nginx.pidje bilahttpd_var_run_t, v dnevnik ni prišla nobena zavrnitev SELinux). Nekateri opisi za to priporočajo ločeno nastavitevtmpfiles.d; v AlmaLinux 10.2 to ni bilo potrebno. Za druge imenike glej: SELinux: zakaj dobim napako „Permission denied”?
Povezava s PHP-FPM
Namestitev PHP-FPM opisuje članek Namestitev PHP v AlmaLinux 9 in 10. Nastavitev domene, na primer v datoteki /etc/nginx/conf.d/pelda.hu.conf:
server {
listen 80;
server_name pelda.hu www.pelda.hu;
root /var/www/pelda.hu/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Vrstica try_files $uri $uri/ /index.php?$args; je potrebna za lepe URL-je WordPressa in večine ogrodij PHP. Osnovna nastavitev PHP-FPM (listen.acl_users = apache,nginx) uporabniku nginx dovoli povezavo z vtičnico, zato dovoljenj ni treba spreminjati.
Preverjanje in ponovno nalaganje:
sudo nginx -t
sudo systemctl reload nginx
curl -s -H "Host: pelda.hu" http://localhost/
V preizkusu je curl vrnil različico PHP in način izvajanja fpm-fcgi. Za HTTPS pridobi potrdilo Let’s Encrypt: Pridobitev potrdila Let’s Encrypt s Certbotom. Razširitev Certbot za Nginx je v EPEL (python3-certbot-nginx).
Posodabljanje
Nginx iz nginx.org se posodablja skupaj z drugimi paketi sistema:
sudo dnf upgrade nginx
Paket ob posodobitvi poskuša tekoči strežnik med delovanjem preklopiti na novo binarno datoteko, vendar se to v preizkusu ni zgodilo: po zamenjavi paketa je nginx -v že kazal novo različico, glava Server tekočega strežnika (curl -sI http://localhost) pa še staro. Zato po posodobitvi preveri nastavitev in storitev znova zaženi:
sudo nginx -t && sudo systemctl restart nginx
Nazaj na vejo stable
sudo dnf config-manager --set-disabled nginx-mainline
sudo dnf distro-sync nginx
V preizkusu je distro-sync mainline 1.31.8 zamenjal s stable različico 1.30.6 (Downgrading); nato tudi tu storitev znova zaženi. Če se želiš vrniti k Nginx iz AlmaLinux, izbriši datoteko nginx.repo in znova namesti paket nginx (prej tudi tu shrani imenik /etc/nginx).
Če so vrata 80 zasedena
Če se Nginx ne zažene in je v dnevniku bind() to 0.0.0.0:80 failed (98: Address already in use), vrata zaseda drug program, običajno Apache. Poglej, kateri:
sudo ss -tlnp | grep ':80 '
Če je v stolpcu users httpd, ustavi in onemogoči Apache (sudo systemctl disable --now httpd) ali enega od spletnih strežnikov premakni na druga vrata.
Odstranitev
sudo systemctl disable --now nginx
sudo dnf remove nginx
sudo rm /etc/yum.repos.d/nginx.repo
Spremenjene nastavitve in lastni navidezni gostitelji lahko v imeniku /etc/nginx ostanejo; če jih ne potrebuješ več, jih po varnostnem kopiranju izbriši.
Na kateri strežnik?
Lastni Nginx lahko poganjaš na KVM VPS ali namenskem strežniku; na njih lahko z dostopom root namestiš kateri koli spletni strežnik. Če namesto Nginx želiš Apache, to opisuje članek Namestitev Apacheja in PHP-FPM.
