====== Nginx veebilehe seadistusfaili (SSL tugi) näidis - Nextcloud ======
Tegemist on Nextcloudi jaoks mõeldud Nginx veebiserveri näidis konfiguratsioonifailiga, mis on mõeldud üksnes testimiseks ja õppeotstarbel. Töökeskkonnas ei ole soovitatav seda seadistust kasutada ilma põhjaliku kontrolli ja põhjalike kohandamisteta vastavalt keskkonna nõuetele.
Autor ei vastuta konfiguratsiooni kasutamisest tulenevate võimalike kahjude eest.
#
# Veebilehe nextcloud.mydomain.local seadistus SSL tugi ja Redirect HTTP (80) > HTTPS (443)
#
server {
# Turvapäised
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;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header X-XSS-Protection "1; mode=block" always;
# ------------------------------------------------------------------------------------------
# Veebilehitseja kasutab alati ja erandlikult ainult HTTPS
# max-age = 63072000 - määrab aja kaua veebilehitseja peab antud reeglit meeles pidama
# includeSubDomains - reegli rakendamine alamdomeenidele
# preload - Lisa domeen HSTS Preload Listi (sisseehitatud veebilehitsejasse)
# Antud parameeter/päis pole kohustuslik
# ------------------------------------------------------------------------------------------
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
# Veebilehe juurkataloog
root /var/www/nextcloud;
# Indeks failid - *.html ja *.htm on fallback
index index.php index.html index.htm;
# Serveri nimi
server_name nextcloud.mydomain.local;
# Asukoht, kus asuvad veebifailid
location / {
rewrite ^ /index.php$request_uri;
}
# Failide ja kaustade kaitse
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
# PHP tugi FastCGI kaudu
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass unix:/run/php/php-fpm.sock; # kontrolli, et see fail eksisteerib
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
# Statiliste failide vahemälu
location ~ \.(?:css|js|woff2?|svg|gif|png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$request_uri;
access_log off;
add_header Cache-Control "public, max-age=15778463";
}
listen 443 ssl; # HTTPS ühendus, IPv4
listen [::]:443 ssl; # HTTPS ühendus, IPv6 (võib jätta vahele, kui ei kasuta IPv6)
# Domeeni (veebilehe) sertifikaat ja privaatvõti
ssl_certificate /etc/ssl/certs/nextcloud.crt;
ssl_certificate_key /etc/ssl/private/nextcloud.key;
# Diffie-Hellman parameetrid (võtmete vahetuseks)
ssl_dhparam /etc/ssl/certs/dh.nextcloud.pem;
# -----------------------------------------------------
# Täiendavad turvaseaded (valikuline)
# -----------------------------------------------------
# Turvaprotokollid
ssl_protocols TLSv1.2 TLSv1.3;
# Krüpteeringud
# HIGH - kõrge turvalisus
# !aNULL - keela paketid, mis ei kasuta autentimist
# !MD5 - keela kõik krüptopaketid, mis kasutavad MD5 räsialgoritmi.
# !DSS - keela DSS/DSA-põhised sertifikaadid ja võtmevahetused
# !aECDH - keela anonüümne ECDH
# !aRSA - keela anonüümne RSA
ssl_ciphers 'HIGH:!aNULL:!MD5:!DSS:!aECDH:!aRSA';
# Eelista serveri poolt pakutud pakette. Server valib oma eelistatud
# krüptopaketi kliendi toetatavate pakettide hulgast
ssl_prefer_server_ciphers on;
# SSL seansside vahemälu
# shared - vahemälu on jagatud NGINX tööprotsesside vahel
# SSL - vahemälu nimi
# 10m - vahemälu suurus 10 megabaiti
ssl_session_cache shared:SSL:10m;
# Vahemällu salvestatud SSL seanssi informatsiooni kehtivus
ssl_session_timeout 15m;
# -------------------------------------------------------------------
# Logfailid
# access_log - kõik päringud (kliendi IP, URL, vastuse kood jne)
# error_log - Nginxi enda vead, PHP-probleemid
# warn - logimistase
# Logitase - debug, info, notice, warn, error, crit, alert, emerg
# -------------------------------------------------------------------
access_log /var/log/nginx/nextcloud.access.log;
error_log /var/log/nginx/nextcloud.error.log warn;
}
server {
if ($host = nextcloud.mydomain.local) {
return 301 https://$host$request_uri;
}
listen 80;
listen [::]:80;
server_name nextcloud.mydomain.local;
return 444; # Katkesta ühendus serveriga, kliendile vastust ei saadeta
}