HTTPS im lokalen Netz (Port 8443, selbstsigniertes Zertifikat, optional mkcert)

This commit is contained in:
2026-07-19 16:03:29 +02:00
parent fc1ea4fa70
commit a695159b1d
8 changed files with 185 additions and 34 deletions

View File

@@ -1,39 +1,26 @@
# HTTP bleibt zusätzlich zu HTTPS verfügbar (kein erzwungener Redirect,
# damit bestehende http://-Zugriffe nicht plötzlich brechen).
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# PWA / SPA: alle unbekannten Routen auf index.html zurückführen
location / {
try_files $uri $uri/ /index.html;
}
# API-Anfragen an den Backend-Container weiterleiten
location /api/ {
proxy_pass http://backend:3001/api/;
proxy_http_version 1.1;
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;
}
# Service Worker und Manifest dürfen nicht langfristig gecacht werden,
# sonst bekommen installierte PWA-Nutzer nie ein Update mit.
location = /sw.js {
add_header Cache-Control "no-cache";
try_files $uri =404;
}
location = /manifest.webmanifest {
add_header Cache-Control "no-cache";
default_type application/manifest+json;
try_files $uri =404;
}
location ~* \.(?:css|js|svg|png|jpg|jpeg|gif|ico|woff2?)$ {
expires 7d;
add_header Cache-Control "public, max-age=604800, immutable";
}
include /etc/nginx/launchpad-locations.conf;
}
# HTTPS Zertifikat wird vom Entrypoint-Skript automatisch erzeugt
# (selbstsigniert) oder ist vom Nutzer eingebunden, siehe README.
server {
listen 443 ssl;
http2 on;
server_name _;
root /usr/share/nginx/html;
index index.html;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
include /etc/nginx/launchpad-locations.conf;
}