Nginx (izrunā "engine-x") ir viens no populārākajiem tīmekļa serveriem pasaulē, ko izmanto aptuveni 34% visu aktīvo mājas lapu. Tas ir pazīstams ar augstu veiktspēju, zemu atmiņas patēriņu un spēju apkalpot lielu skaitu vienlaicīgu savienojumu.

Šajā rakstā detalizēti apskatīsim Nginx konfigurāciju — no pamata iestatījumiem līdz veiktspējas optimizācijai un drošības pastiprināšanai.

1. Kas ir Nginx un kāpēc to izvēlēties?

Nginx sākotnēji tika izveidots 2004. gadā, lai atrisinātu C10K problēmu — spēju vienlaicīgi apkalpot 10 000 savienojumu. Atšķirībā no Apache, kas katram savienojumam izveido atsevišķu procesu vai pavedienu, Nginx izmanto notikumu vadītu (event-driven) arhitektūru.

Nginx priekšrocības

Īpašība Nginx Apache
Arhitektūra Notikumu vadīta (asinhrona) Procesu/pavedienu vadīta
Statiskais saturs Ārkārtīgi ātrs Labs, bet lēnāks
Atmiņas patēriņš Zems Augstāks ar daudziem savienojumiem
Konfigurācija Centralizēta (faili) .htaccess + faili
Reverse proxy Iebūvēts, ātrs Modulis (mod_proxy)

Galvenie Nginx pielietojumi

  • Tīmekļa serveris — apkalpo statiskos un dinamiskos pieprasījumus
  • Reverse proxy — pārsūta pieprasījumus uz iekšējiem serveriem (Node.js, Python, PHP-FPM)
  • Slodzes balansētājs — sadala trafiku starp vairākiem serveriem
  • SSL terminācija — apstrādā HTTPS un pārsūta HTTP uz iekšējiem serveriem
  • Kešošanas serveris — saglabā bieži pieprasīto saturu atmiņā

2. Instalēšana

Ubuntu / Debian

sudo apt update
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

CentOS / RHEL / AlmaLinux

sudo dnf install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Pārbaude

Pēc instalēšanas atveriet pārlūkprogrammā servera IP adresi — jāparādās Nginx sveiciena lapa. Pārbaudiet statusu:

sudo systemctl status nginx
nginx -v

3. Konfigurācijas failu struktūra

Nginx konfigurācija ir organizēta hierarhiskā struktūrā:

/etc/nginx/
├── nginx.conf # Galvenā konfigurācija
├── conf.d/ # Papildu konfigurācijas faili
├── sites-available/ # Pieejamās vietnes (Debian/Ubuntu)
├── sites-enabled/ # Aktivizētās vietnes (simboliskās saites)
├── snippets/ # Atkārtoti izmantojami konfigurācijas fragmenti
├── mime.types # MIME tipu definīcijas
├── fastcgi_params # FastCGI parametri
└── modules-enabled/ # Aktivizētie moduļi

Konfigurācijas konteksti (bloki)

Nginx konfigurācija izmanto ligzdotos blokus:

# Galvenais konteksts (main)
worker_processes auto;

# Notikumu konteksts
events {
worker_connections 1024;
}

# HTTP konteksts
http {
# HTTP iestatījumi

# Servera konteksts
server {
listen 80;
server_name example.com;

# Atrašanās vietas konteksts
location / {
root /var/www/html;
}
}
}

Konteksts Apraksts
main Globālie iestatījumi (ārpus visiem blokiem)
events Savienojumu apstrādes konfigurācija
http HTTP servera iestatījumi
server Konkrētas vietnes (virtual host) iestatījumi
location Pieprasījumu apstrāde pēc URL ceļa

4. Galvenā konfigurācija (nginx.conf)

Rediģējiet galveno konfigurācijas failu:

sudo nano /etc/nginx/nginx.conf

Optimizēta nginx.conf konfigurācija

# Darbinieku procesu skaits (auto = CPU kodolu skaits)
worker_processes auto;

# Maksimālais atvērto failu skaits katram procesam
worker_rlimit_nofile 65535;

# PID faila atrašanās vieta
pid /run/nginx.pid;

events {
# Maksimālais savienojumu skaits katram darbiniekam
worker_connections 4096;

# Pieņemt visus jaunos savienojumus uzreiz
multi_accept on;

# Izmantot efektīvāko metodi (Linux)
use epoll;
}

http {
# === Pamata iestatījumi ===
sendfile on;
tcp_nopush on;
tcp_nodelay on;

# Savienojuma noildzes laiks
keepalive_timeout 30;
keepalive_requests 1000;

# Bufera izmēri
client_body_buffer_size 16k;
client_header_buffer_size 1k;
client_max_body_size 64M;
large_client_header_buffers 4 16k;

# Noildzes
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;

# MIME tipi
include /etc/nginx/mime.types;
default_type application/octet-stream;

# === Logošana ===
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;

# === Gzip saspiešana ===
gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml
application/xml+rss
application/xhtml+xml
image/svg+xml
font/woff
font/woff2;

# === Iekļaut vietnes ===
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

Galveno parametru skaidrojums

Parametrs Skaidrojums Ieteicamā vērtība
worker_processes Darbinieku procesu skaits auto (= CPU kodoli)
worker_connections Savienojumi katram procesam 1024–4096
sendfile Efektīvāka failu sūtīšana on
tcp_nopush Nosūta galvenes un saturu kopā on
keepalive_timeout Cik ilgi turēt savienojumu atvērtu 15–30 sekundes
gzip_comp_level Saspiešanas līmenis (1–9) 4–6 (balanss)

5. Virtuālā hosta (server bloka) izveide

Katrai mājas lapai izveido atsevišķu konfigurācijas failu:

sudo nano /etc/nginx/sites-available/manalapa.lv

Pamata konfigurācija (HTTP)

server {
listen 80;
listen [::]:80;
server_name manalapa.lv www.manalapa.lv;
root /var/www/manalapa.lv;
index index.html index.htm;

# Logošana
access_log /var/log/nginx/manalapa.lv.access.log;
error_log /var/log/nginx/manalapa.lv.error.log;

location / {
try_files $uri $uri/ =404;
}
}

Aktivizēšana

# Izveidojiet simbolisko saiti
sudo ln -s /etc/nginx/sites-available/manalapa.lv /etc/nginx/sites-enabled/

# Pārbaudiet konfigurācijas sintaksi
sudo nginx -t

# Pārlādējiet Nginx
sudo systemctl reload nginx

Svarīgi: Vienmēr pārbaudiet konfigurāciju ar nginx -t pirms pārlādēšanas. Kļūdaina konfigurācija var apturēt serveri!

PHP atbalsts (ar PHP-FPM)

Lai apkalpotu PHP lietotnes (WordPress, Laravel u.c.), pievienojiet PHP apstrādes bloku:

server {
listen 80;
server_name manalapa.lv www.manalapa.lv;
root /var/www/manalapa.lv;
index index.php index.html;

location / {
try_files $uri $uri/ /index.php?$args;
}

# PHP apstrāde caur PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

# Bufera optimizācija
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}

# Bloķēt piekļuvi slēptajiem failiem
location ~ /\. {
deny all;
}
}

6. SSL/TLS konfigurācija (HTTPS)

Droša HTTPS konfigurācija ir obligāta jebkurai modernai mājas lapai. Izmantojiet bezmaksas Let's Encrypt sertifikātus.

Sertifikāta iegūšana ar Certbot

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d manalapa.lv -d www.manalapa.lv

Optimizēta SSL konfigurācija

server {
listen 80;
listen [::]:80;
server_name manalapa.lv www.manalapa.lv;

# Pāradresēt visu trafiku uz HTTPS
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name manalapa.lv www.manalapa.lv;
root /var/www/manalapa.lv;
index index.html;

# SSL sertifikāti
ssl_certificate /etc/letsencrypt/live/manalapa.lv/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/manalapa.lv/privkey.pem;

# SSL optimizācija
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# Moderni protokoli un šifri
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;

# Drošības galvenes
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

location / {
try_files $uri $uri/ =404;
}
}

Drošības galveņu skaidrojums

Galvene Funkcija
X-Frame-Options Aizsargā pret clickjacking uzbrukumiem (lapu ielādi iframe)
X-Content-Type-Options Neļauj pārlūkam minēt satura tipu (MIME sniffing)
X-XSS-Protection Aktivizē pārlūka iebūvēto XSS filtru
Referrer-Policy Kontrolē, cik daudz informācijas sūtīt Referer galvenē
Strict-Transport-Security Piespiež pārlūku vienmēr izmantot HTTPS (HSTS)

7. Location bloku darbība

Location bloki nosaka, kā Nginx apstrādā pieprasījumus pēc URL ceļa. Izprast to prioritāšu secību ir ļoti svarīgi.

Location tipi un to prioritāte

Sintakse Tips Prioritāte Piemērs
= /ceļš Precīza sakritība 1 (augstākā) = /about
^~ /ceļš Prefikss (neizmanto regex pēc tam) 2 ^~ /images/
~ regex Regulārā izteiksme (reģistrjūtīga) 3 ~ \.php$
~* regex Regulārā izteiksme (nereģistrjūtīga) 3 ~* \.(jpg|png)$
/ceļš Prefikss (parasts) 4 (zemākā) /api/

Praktiski piemēri

# Precīza sakritība — tikai galvenā lapa
location = / {
# Apstrādā tikai pieprasījumu uz "/"
}

# Prefiksa sakritība — visi faili mapē /static/
location ^~ /static/ {
alias /var/www/static/;
expires 30d;
}

# Regulārā izteiksme — attēli
location ~* \.(jpg|jpeg|png|gif|webp|svg|ico)$ {
expires 365d;
add_header Cache-Control "public, immutable";
access_log off;
}

# Parastu prefiksu sakritība
location /api/ {
proxy_pass http://127.0.0.1:3000;
}

8. Reverse proxy konfigurācija

Nginx bieži izmanto kā reverse proxy — tas pieņem pieprasījumus no interneta un pārsūta tos uz iekšēju lietotni (Node.js, Python, Go u.c.).

Pamata reverse proxy

server {
listen 80;
server_name api.manalapa.lv;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;

# Galveņu pārsūtīšana
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 $scheme;

# WebSocket atbalsts
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

# Noildzes
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}

Slodzes balansēšana

Ja jums ir vairāki serveri, Nginx var sadalīt trafiku starp tiem:

upstream backend_servers {
# Round Robin (noklusējuma) — katrs serveris saņem pieprasījumu pēc kārtas
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;

# Vai izmantojiet citus algoritmus:
# least_conn; — nosūta uz serveri ar mazāk aktīvo savienojumu
# ip_hash; — viens klients vienmēr uz vienu serveri
}

server {
listen 80;
server_name manalapa.lv;

location / {
proxy_pass http://backend_servers;
}
}

9. Veiktspējas optimizācija

Statisko failu kešošana

Iestatiet ilgu kešošanas laiku statiskajiem failiem, lai pārlūkprogramma tos saglabātu un nepieprasītu atkārtoti:

# Attēli — kešot 1 gadu
location ~* \.(jpg|jpeg|png|gif|webp|avif|svg|ico)$ {
expires 365d;
add_header Cache-Control "public, immutable";
access_log off;
}

# CSS un JavaScript — kešot 30 dienas
location ~* \.(css|js)$ {
expires 30d;
add_header Cache-Control "public";
access_log off;
}

# Fonti — kešot 1 gadu
location ~* \.(woff|woff2|ttf|eot|otf)$ {
expires 365d;
add_header Cache-Control "public, immutable";
add_header Access-Control-Allow-Origin "*";
access_log off;
}

Gzip saspiešana — detalizēti

Gzip ievērojami samazina pārsūtāmo datu apjomu (parasti par 60–80%):

gzip on;
gzip_vary on;
gzip_comp_level 5; # Balanss starp CPU un saspiešanu
gzip_min_length 256; # Nesaspiest mazus failus
gzip_proxied any; # Saspiest arī proxy atbildes
gzip_disable "msie6"; # Nesaspiest vecajam IE6
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml
application/xml+rss
application/xhtml+xml
image/svg+xml
font/woff
font/woff2;

Piezīme: neiekļaujiet bināros formātus (JPEG, PNG, WebP, ZIP) — tie jau ir saspiesti, un atkārtota saspiešana tērē CPU bez ieguvuma.

FastCGI kešošana

Ja serveris apkalpo PHP lietotni, FastCGI kešošana var ievērojami samazināt atbildes laiku, saglabājot PHP ģenerētās lapas:

# Pirms server bloka — definēt kešu
fastcgi_cache_path /var/cache/nginx/fcgi
levels=1:2
keys_zone=FCGICACHE:100m
inactive=60m
max_size=512m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

# Server bloka iekšienē — PHP location
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;

# Kešošana
fastcgi_cache FCGICACHE;
fastcgi_cache_valid 200 60m; # Kešot veiksmīgas atbildes 60 min
fastcgi_cache_valid 404 1m; # 404 kešot 1 minūti

# Nekešot pieteikušos lietotājus
set $skip_cache 0;
if ($cookie_sessionid) {
set $skip_cache 1;
}
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

# Pievienot galveni, lai redzētu, vai atbilde nāk no keša
add_header X-Cache-Status $upstream_cache_status;
}

Bufera optimizācija

# Proxy bufera iestatījumi
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;

# FastCGI bufera iestatījumi
fastcgi_buffer_size 32k;
fastcgi_buffers 16 16k;

10. Drošības konfigurācija

Servera versijas slēpšana

Pēc noklusējuma Nginx atklāj savu versiju atbilžu galvenēs. Tas var palīdzēt uzbrucējiem atrast zināmas ievainojamības:

# http blokā
server_tokens off;

Piekļuves ierobežošana

# Bloķēt piekļuvi slēptajiem failiem (.git, .env u.c.)
location ~ /\. {
deny all;
return 404;
}

# Aizsargāt administrācijas paneli ar IP
location /admin/ {
allow 192.168.1.0/24; # Atļaut tikai no iekšējā tīkla
allow 85.123.45.67; # Atļaut konkrētu IP
deny all; # Bloķēt visus pārējos
}

# Paroles aizsardzība (Basic Auth)
location /private/ {
auth_basic "Ierobežota piekļuve";
auth_basic_user_file /etc/nginx/.htpasswd;
}

Paroles faila izveide:

sudo apt install apache2-utils -y
sudo htpasswd -c /etc/nginx/.htpasswd lietotajvards

Pieprasījumu ātruma ierobežošana (Rate Limiting)

Aizsargājiet serveri no pārmērīgiem pieprasījumiem un DDoS uzbrukumiem:

# http blokā — definēt ierobežojuma zonu
limit_req_zone $binary_remote_addr zone=ONE:10m rate=10r/s;

# server vai location blokā — piemērot ierobežojumu
location /api/ {
limit_req zone=ONE burst=20 nodelay;
limit_req_status 429;
proxy_pass http://127.0.0.1:3000;
}

Parametrs Skaidrojums
rate=10r/s Atļaut 10 pieprasījumus sekundē no vienas IP
burst=20 Buferis — atļaut līdz 20 papildu pieprasījumiem (rindā)
nodelay Apstrādāt burst pieprasījumus uzreiz, nevis aizkavēt

11. Logošana un monitorings

Pielāgots loga formāts

# http blokā
log_format detailed '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time';

# server blokā
access_log /var/log/nginx/manalapa.lv.access.log detailed;

Logu analīze

Noderīgas komandas logu analīzei:

# 10 biežāk pieprasītie URL
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# Pieprasījumi no katras IP (top 10)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# 404 kļūdu saraksts
awk '$9 == "404" {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

# Reāllaika logu skatīšana
tail -f /var/log/nginx/access.log

Logu rotācija

Nginx logi var kļūt ļoti lieli. Ubuntu/Debian pēc noklusējuma izmanto logrotate. Pārbaudiet konfigurāciju:

cat /etc/logrotate.d/nginx

12. Noderīgas Nginx komandas

Komanda Apraksts
nginx -t Pārbaudīt konfigurācijas sintaksi
nginx -T Parādīt pilnu aktīvo konfigurāciju
nginx -s reload Pārlādēt konfigurāciju bez apstāšanās
nginx -s stop Nekavējoties apturēt Nginx
nginx -s quit Gracefully apturēt (pabeigt aktīvos pieprasījumus)
systemctl status nginx Pārbaudīt Nginx servisa statusu
systemctl restart nginx Pārstartēt Nginx
nginx -V Parādīt versiju un kompilācijas parametrus

13. Biežākās kļūdas un to risinājumi

Kļūda Iemesls Risinājums
502 Bad Gateway Backend serveris nedarbojas Pārbaudiet PHP-FPM/Node.js statusu
504 Gateway Timeout Backend atbild pārāk ilgi Palieliniet proxy_read_timeout
413 Request Entity Too Large Augšupielāde pārsniedz limitu Palieliniet client_max_body_size
403 Forbidden Nav piekļuves tiesību Pārbaudiet failu atļaujas un location blokus
[emerg] bind() failed Ports jau aizņemts Pārbaudiet ar ss -tlnp | grep :80
Permission denied (socket) Nav piekļuves PHP-FPM socket Pārbaudiet lietotāju www-data

14. Pilns konfigurācijas piemērs WordPress lapai

Šeit ir pilna, optimizēta Nginx konfigurācija WordPress mājas lapai ar SSL, kešošanu un drošību:

fastcgi_cache_path /var/cache/nginx/wordpress
levels=1:2
keys_zone=WORDPRESS:100m
inactive=60m
max_size=512m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

# HTTP → HTTPS pāradresēšana
server {
listen 80;
listen [::]:80;
server_name manalapa.lv www.manalapa.lv;
return 301 https://manalapa.lv$request_uri;
}

# www → bez www pāradresēšana
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.manalapa.lv;

ssl_certificate /etc/letsencrypt/live/manalapa.lv/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/manalapa.lv/privkey.pem;

return 301 https://manalapa.lv$request_uri;
}

# Galvenais server bloks
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name manalapa.lv;
root /var/www/manalapa.lv;
index index.php index.html;

# SSL
ssl_certificate /etc/letsencrypt/live/manalapa.lv/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/manalapa.lv/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_stapling on;
ssl_stapling_verify on;

# Drošības galvenes
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Strict-Transport-Security "max-age=63072000" always;

# Logošana
access_log /var/log/nginx/manalapa.lv.access.log;
error_log /var/log/nginx/manalapa.lv.error.log;

client_max_body_size 64M;

# Noteikt, vai izlaist kešu
set $skip_cache 0;
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/wp-login.php") { set $skip_cache 1; }
if ($http_cookie ~* "wordpress_logged_in") { set $skip_cache 1; }

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

# FastCGI kešošana
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache-Status $upstream_cache_status;
}

# Statisko failu kešošana
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff|woff2|ttf|eot)$ {
expires 365d;
add_header Cache-Control "public, immutable";
access_log off;
}

# Drošības noteikumi
location ~ /\. { deny all; }
location ~* /wp-config\.php { deny all; }
location ~* /wp-includes/.*\.php$ { deny all; }
location ~* /wp-content/uploads/.*\.php$ { deny all; }
location = /xmlrpc.php { deny all; }
}

Kopsavilkums

Nginx ir jaudīgs un elastīgs tīmekļa serveris, kas ar pareizu konfigurāciju var apkalpot miljoniem pieprasījumu. Galvenie punkti, ko atcerēties:

  1. Sāciet ar pamata konfigurāciju un pakāpeniski optimizējiet
  2. Vienmēr pārbaudiet konfigurāciju ar nginx -t pirms pārlādēšanas
  3. Izmantojiet SSL/TLS — HTTPS ir obligāts jebkurai modernai lapai
  4. Kešojiet statisku saturu — attēlus, CSS, JS ar ilgu expires laiku
  5. Ieslēdziet Gzip — samazina trafiku par 60–80%
  6. Nodrošiniet drošību — slēpiet versiju, ierobežojiet piekļuvi, izmantojiet drošības galvenes
  7. Monitorējiet logus — regulāri pārbaudiet kļūdas un aizdomīgas darbības

Noderīgas saites:

Laboja mad, labots 2x