# nebbet.no nginx configuration # Adjust SITE_ROOT to the absolute path of your project directory. # Reload after changes: sudo nginx -s reload server { listen 80; listen [::]:80; server_name nebbet.no www.nebbet.no; # Redirect www → apex (optional, remove if not needed) if ($host = www.nebbet.no) { return 301 $scheme://nebbet.no$request_uri; } # ── static assets ──────────────────────────────────────────────────────── # Served directly from source so you don't have to copy them on every build. location /styles/ { alias SITE_ROOT/styles/; expires 1d; add_header Cache-Control "public"; } location /components/ { alias SITE_ROOT/components/; expires 1d; add_header Cache-Control "public"; } location /lib/ { alias SITE_ROOT/lib/; expires 1d; add_header Cache-Control "public"; } # ── admin (password-protected) ─────────────────────────────────────────── location /admin/ { auth_basic "Admin"; # The .passwords file is htpasswd-compatible (bcrypt). # Manage with: nebbet user add auth_basic_user_file SITE_ROOT/.passwords; root SITE_ROOT/public; index index.html; try_files $uri $uri.html $uri/index.html =404; } # ── public pages ───────────────────────────────────────────────────────── location / { root SITE_ROOT/public; index index.html; # Clean URLs: /about → /about.html try_files $uri $uri.html $uri/index.html =404; expires 1h; add_header Cache-Control "public"; } # ── 404 ────────────────────────────────────────────────────────────────── error_page 404 /404.html; location = /404.html { root SITE_ROOT/public; internal; } # ── gzip ───────────────────────────────────────────────────────────────── gzip on; gzip_types text/html text/css application/javascript application/json; gzip_min_length 1024; }