diff --git a/docker/nginx.conf b/docker/nginx.conf index db4c5f2..91dae72 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -1,7 +1,7 @@ server { listen 80; listen 443 ssl; - server_name _; + server_name bilhej.se www.bilhej.se; ssl_certificate /etc/nginx/certs/cert.crt; ssl_certificate_key /etc/nginx/certs/cert.key; @@ -11,20 +11,59 @@ server { root /usr/share/nginx/html; index index.html; + # ── Security headers ────────────────────────────────────────── + add_header X-Frame-Options "DENY" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; + # Strict-Transport-Security only when HTTPS is active + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; + + # ── Gzip ────────────────────────────────────────────────────── + gzip on; + gzip_types text/plain text/css application/json application/javascript text/xml + application/xml text/javascript image/svg+xml text/markdown; + gzip_vary on; + gzip_min_length 256; + gzip_comp_level 6; + + # ── API reverse proxy ───────────────────────────────────────── location /api/ { proxy_pass http://backend:8080; 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_set_header X-Forwarded-Host $host; } + # ── Static assets with far-future cache ─────────────────────── + location ~* \.(?:ico|svg|css|js|woff2?|ttf|eot|png|jpg|jpeg|gif|webp|avif)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + add_header Vary "Accept-Encoding"; + try_files $uri =404; + } + + # ── Robots + sitemap (never cached, fresh every time) ───────── + location = /robots.txt { + add_header Cache-Control "no-cache, must-revalidate"; + try_files $uri =404; + } + location = /sitemap.xml { + add_header Cache-Control "no-cache, must-revalidate"; + try_files $uri =404; + } + + # ── SPA fallback — serve index.html for all other routes ────── location / { try_files $uri $uri/ /index.html; } - gzip on; - gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml; - gzip_vary on; - gzip_min_length 256; + # ── Deny access to dotfiles ─────────────────────────────────── + location ~ /\. { + deny all; + return 404; + } } diff --git a/frontend/index.html b/frontend/index.html index a4f349f..821f2c0 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,12 +4,143 @@ - + + + Bilhej — Skicka brev till fordonsägare via registreringsnummer + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Bilhej — Skicka brev till fordonsägare + + + + + + + + + + + +
diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt new file mode 100644 index 0000000..3d9cbda --- /dev/null +++ b/frontend/public/robots.txt @@ -0,0 +1,27 @@ +# Allow all crawlers +User-agent: * +Crawl-delay: 10 +Disallow: /api/ +Disallow: /admin/ +Disallow: /orders/ +Disallow: /bestallning/*/redigera +Disallow: /betalning/* +Disallow: /gast-bestallning* +Disallow: /gast-betalning/* +Disallow: /gast-order/* +Disallow: /andra-losenord +Disallow: /andra-epost +Disallow: /bekrafta-epost +Disallow: /aterstall-losenord +Disallow: /glomt-losenord + +# Allow important pages +Allow: / +Allow: /om-oss +Allow: /om +Allow: /kontakt +Allow: /integritetspolicy +Allow: /villkor + +# Sitemap +Sitemap: https://bilhej.se/sitemap.xml diff --git a/frontend/public/sitemap.xml b/frontend/public/sitemap.xml new file mode 100644 index 0000000..a5541e5 --- /dev/null +++ b/frontend/public/sitemap.xml @@ -0,0 +1,36 @@ + + + + https://bilhej.se/ + weekly + 1.0 + + + https://bilhej.se/om-oss + monthly + 0.7 + + + https://bilhej.se/om + monthly + 0.3 + + + https://bilhej.se/kontakt + monthly + 0.6 + + + https://bilhej.se/integritetspolicy + monthly + 0.5 + + + https://bilhej.se/villkor + monthly + 0.5 + + diff --git a/frontend/src/App.vue b/frontend/src/App.vue index ddb678e..63ae1b6 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,7 +1,29 @@