From befb9bffc98e323d5d7c19d050b2f254d8d60467 Mon Sep 17 00:00:00 2001 From: Stefan Imhoff Date: Thu, 4 Apr 2024 11:19:32 +0200 Subject: [PATCH] feat: add custom nginx configuration --- Dockerfile | 6 ++++++ nginx.conf | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 nginx.conf diff --git a/Dockerfile b/Dockerfile index db230f8..014f029 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,12 @@ RUN pnpm run build # Stage 2: Serve the application using Nginx FROM nginx:stable-alpine +# Remove the default nginx.conf +RUN rm /etc/nginx/conf.d/default.conf + +# Copy custom nginx configuration +COPY ./nginx.conf /etc/nginx/conf.d/default.conf + # Copy build artifacts from the builder stage COPY --from=builder /app/dist /usr/share/nginx/html diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..0e12924 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,33 @@ +server { + listen 80; + listen [::]:80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + # Error 404 + error_page 404 /404.html; + + # General headers applied to all routes + add_header X-Frame-Options "DENY"; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Content-Type-Options "nosniff"; + add_header Referrer-Policy "no-referrer-when-downgrade"; + add_header Permissions-Policy "interest-cohort=()"; + + # Special handling for /sw.js + location = /sw.js { + add_header cache-control "max-age=0, no-cache, no-store, must-revalidate"; + } + + # Redirects + location ~ ^/artikel/(.*)$ { + return 301 /$1; + } + + # Handling missing pages + try_files $uri $uri/ /index.html; +}