# ASW — Agentic Semantic Web site # Self-contained server block. Proxied from trentuna at /asw/. # Future: point asw.trentuna.com directly at port 8044. server { listen 8044; listen [::]:8044; server_name _; root /home/exedev/projects/agentic-semantic-web; index index.html; ssi on; error_page 403 /errors/403.html; error_page 404 /errors/404.html; error_page 500 /errors/500.html; error_page 502 /errors/502.html; error_page 503 /errors/503.html; location /errors/ { alias /home/exedev/projects/agentic-semantic-web/errors/; internal; } # Block source/build files — not for public consumption location ~ ^/(src|content|templates|node_modules|packs|dist)(/?$|/) { return 404; } location ~ \.(sh|lua|lock)$ { return 404; } # docs/ — directory listing with ASW styling injected into autoindex responses. # Target patterns unique to nginx autoindex output: # - 'Index of' — only in autoindex, never in hand-crafted HTML # - '<body bgcolor="white">' — only in autoindex # Hand-crafted HTML pages in /docs/ are NOT affected. location /docs/ { autoindex on; try_files $uri $uri/ =404; sub_filter '<head><title>Index of' '<head> <link rel="stylesheet" href="/asw.css"> <meta name="color-scheme" content="dark"> <style> body{padding:2rem;max-inline-size:64ch} h1{font-size:1rem;font-weight:500;color:var(--text-2);margin-block-end:1.5rem} a{color:var(--blue-3);text-decoration:none}a:hover{text-decoration:underline} pre{font-family:var(--font-mono,"JetBrains Mono",monospace);line-height:1.8} hr{border:none;border-block-start:1px solid var(--stone-7)} </style> <title>Index of'; sub_filter '<body bgcolor="white">' '<body>'; sub_filter_once on; } # lab/ — now has index.html; subdirs with autoindex still styled via sub_filter location /lab/ { try_files $uri $uri/ =404; } # Hugo demo — ASW-Hugo pack showcase (serves lab/hugo-demo/public/) location /hugo-demo/ { alias /home/exedev/projects/agentic-semantic-web/lab/hugo-demo/public/; index index.html; try_files $uri $uri/ =404; } location / { try_files $uri $uri/ =404; } }