f537f32295
100-post fashion journal generated from ~/projects/ginger content: - Hugo Extended static site with TailwindCSS v4 - WebP image pipeline (thumb/card/og/full sizes via Hugo image processing) - Full SEO: sitemap (501 URLs), OpenGraph with per-post images, Twitter cards - Async page transitions via View Transitions API - Deep-linked URLs: /posts/[slug]/, /categories/[cat]/, /tags/[tag]/, /issues/ - Lightbox with keyboard/swipe nav, thumbnail strip, inverted search index - Issues archive with quarterly release structure - Multi-stage Dockerfile (Tailwind → Hugo → nginx:alpine) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
872 B
Nginx Configuration File
31 lines
872 B
Nginx Configuration File
server {
|
|
listen 80;
|
|
server_name _;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
charset utf-8;
|
|
|
|
gzip on;
|
|
gzip_types text/plain text/css application/json application/javascript image/svg+xml;
|
|
gzip_min_length 256;
|
|
|
|
# Long-cache static assets (CSS, JS, images, fonts)
|
|
location ~* \.(css|js|woff2?|ttf|otf|eot|svg|webp|png|jpg|jpeg|ico|gif)$ {
|
|
expires 1y;
|
|
add_header Cache-Control "public, immutable";
|
|
add_header Vary Accept-Encoding;
|
|
}
|
|
|
|
# HTML pages — no-cache so updates are picked up immediately
|
|
location ~* \.html$ {
|
|
add_header Cache-Control "no-cache, must-revalidate";
|
|
}
|
|
|
|
# SPA-style routing: serve index.html for unknown paths
|
|
location / {
|
|
try_files $uri $uri/ $uri.html =404;
|
|
}
|
|
|
|
error_page 404 /404.html;
|
|
}
|