From 18a3e20d34efae039712c72eb798fd56de75102e Mon Sep 17 00:00:00 2001 From: Felix Brabetz Date: Sat, 16 May 2026 01:51:31 +0200 Subject: [PATCH] Optimize Nginx (gzip, cache) and Traefik (WWW redirect) --- Dockerfile | 1 + docker-compose.yml | 3 +++ nginx.conf | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 nginx.conf diff --git a/Dockerfile b/Dockerfile index 07134dd..a609850 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,5 +9,6 @@ RUN npm run build # Stage 2: Serve the site with Nginx FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] diff --git a/docker-compose.yml b/docker-compose.yml index 1e3c4b9..f62dd66 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,9 @@ services: - "traefik.http.routers.brabetz-home.tls=true" - "traefik.http.routers.brabetz-home.tls.certresolver=myresolver" - "traefik.http.services.brabetz-home.loadbalancer.server.port=80" + - "traefik.http.middlewares.redirect-to-non-www.redirectregex.regex=^https?://www.gebrueder-brabetz.de/(.*)" + - "traefik.http.middlewares.redirect-to-non-www.redirectregex.replacement=https://gebrueder-brabetz.de/$$1" + - "traefik.http.routers.brabetz-home.middlewares=redirect-to-non-www" networks: traefik_proxy: diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..3fda967 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,22 @@ +server { + listen 80; + server_name localhost; + + root /usr/share/nginx/html; + index index.html; + + # Gzip Compression + gzip on; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + # Caching for static assets (Bilder, Schriften, JS/CSS) + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, no-transform"; + } + + # Fallback für SPA-Routing (falls wir mal echte Seiten hinzufügen) + location / { + try_files $uri $uri/ /index.html; + } +}