/etc/nginx/header.conf
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Robots-Tag none always; add_header X-Download-Options noopen always; add_header X-Permitted-Cross-Domain-Policies none always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "no-referrer" always; add_header X-Frame-Options "SAMEORIGIN" always;
/etc/nginx/nginx.conf
In dieser Datei müssen IPs angepasst und sowohl die proxy.conf, als auch die header.conf mit einem #-Zeichen auskommentiert werden!
user www-data; worker_processes auto; pid /var/run/nginx.pid; events { worker_connections 1024; multi_accept on; use epoll; } http { server_names_hash_bucket_size 64; upstream php-handler { server unix:/run/php/php7.4-fpm.sock; } set_real_ip_from 127.0.0.1; set_real_ip_from 192.168.2.0/24; # die IP-Range ihres Netzwerks real_ip_header X-Forwarded-For; real_ip_recursive on; # include /etc/nginx/proxy.conf; # include /etc/nginx/header.conf; include /etc/nginx/mime.types; include /etc/nginx/optimization.conf; include /etc/nginx/ssl.conf; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log warn; sendfile on; send_timeout 3600; tcp_nopush on; tcp_nodelay on; open_file_cache max=500 inactive=10m; open_file_cache_errors on; keepalive_timeout 65; reset_timedout_connection on; server_tokens off; resolver 127.0.0.53 valid=30s; resolver_timeout 5s; include /etc/nginx/conf.d/*.conf; }
/etc/nginx/optimization.conf
fastcgi_hide_header X-Powered-By; fastcgi_read_timeout 3600; fastcgi_send_timeout 3600; fastcgi_connect_timeout 3600; fastcgi_buffers 64 64K; fastcgi_buffer_size 256k; fastcgi_busy_buffers_size 3840K; fastcgi_cache_key $http_cookie$request_method$host$request_uri; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; gzip_disable "MSIE [1-6]\.";
/etc/nginx/php_optimization.conf
In dieser Datei muss die letzte Zeile mit einem #-Zeichen auskommentiert werden!
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
fastcgi_cache_valid 404 1m;
fastcgi_cache_valid any 1h;
fastcgi_cache_methods GET HEAD;
fastcgi_pass php-handler;
# fastcgi_param HTTPS on;
/etc/nginx/proxy.conf
proxy_connect_timeout 3600; proxy_read_timeout 3600; proxy_redirect off; proxy_send_timeout 3600; proxy_set_header Cache-Control "public, max-age=15778463"; proxy_set_header Host $host; proxy_set_header Referrer-Policy no-referrer; proxy_set_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;"; proxy_set_header X-Content-Type-Options nosniff; proxy_set_header X-Download-Options noopen; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Permitted-Cross-Domain-Policies none; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Robots-Tag none; proxy_set_header X-XSS-Protection "1; mode=block";
/etc/nginx/ssl.conf
ssl_certificate /etc/letsencrypt/rsa-certs/fullchain.pem; ssl_certificate_key /etc/letsencrypt/rsa-certs/privkey.pem; ssl_certificate /etc/letsencrypt/ecc-certs/fullchain.pem; ssl_certificate_key /etc/letsencrypt/ecc-certs/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/ecc-certs/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384'; ssl_ecdh_curve X448:secp521r1:secp384r1:prime256v1; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on;
/etc/nginx/conf.d/gateway.conf
In dieser Datei muss your.dedyn.io durch Ihren Domainnamen ersetzt werden!
server { server_name your.dedyn.io; listen 80 default_server; listen [::]:80 default_server; location ^~ /.well-known/acme-challenge { proxy_pass http://127.0.0.1:81; proxy_set_header Host $host; } location / { return 301 https://$server_name$request_uri; } } server { server_name your.dedyn.io; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; root /var/www/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } include /etc/nginx/proxy.conf; include /etc/nginx/header.conf; client_max_body_size 10240M; location ^~ / { client_max_body_size 10G; proxy_connect_timeout 3600; proxy_send_timeout 3600; proxy_read_timeout 3600; send_timeout 3600; proxy_buffering off; proxy_request_buffering off; proxy_max_temp_file_size 10240m; 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; proxy_pass http://127.0.0.1:82; proxy_redirect off; } location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/webfinger { return 301 $scheme://$host/public.php?service=webfinger; } location ~ /(ocm-provider|ocs-provider)/ { return 301 $scheme://$host/$1/; } }
/etc/nginx/conf.d/nextcloud.conf
server { server_name 127.0.0.1; listen 127.0.0.1:82; listen [::]:82; root /var/www/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } location ^~ / { client_max_body_size 10G; location / { rewrite ^ /index.php; } location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { deny all; } location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) { fastcgi_split_path_info ^(.+?\.php)(\/.*|)$; set $path_info $fastcgi_path_info; try_files $fastcgi_script_name =404; include fastcgi_params; include /etc/nginx/php_optimization.conf; } location ~ ^\/(?:updater|ocs-provider|ocm-provider)(?:$|\/) { try_files $uri/ =404; index index.php; } location ~ ^\/.+[^\/]\.(?:css|js|woff2?|svg|gif)$ { try_files $uri /index.php$request_uri; access_log off; } location ~ ^\/.+[^\/]\.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$request_uri; access_log off; } } }
/etc/nginx/conf.d/letsencrypt.conf
server { server_name 127.0.0.1; listen 127.0.0.1:81; listen [::]:81; charset utf-8; location ^~ /.well-known/acme-challenge { default_type text/plain; root /var/www/letsencrypt; } }
Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!