# nginx-конфиг внутри контейнера. TLS терминируется на хосте (web.hhivp.com). server { listen 80 default_server; server_name _; root /usr/share/nginx/html; index index.html; access_log /dev/stdout; error_log /dev/stderr warn; location ~ /\.(?!well-known) { deny all; log_not_found off; access_log off; } gzip on; gzip_vary on; gzip_min_length 256; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css text/xml application/json application/xml application/javascript application/x-javascript image/svg+xml font/woff2; location = /sitemap.txt { default_type text/plain; charset utf-8; } location = /robots.txt { default_type text/plain; charset utf-8; } location = /ai.txt { default_type text/plain; charset utf-8; } location = /llms.txt { default_type text/plain; charset utf-8; } location /_astro/ { expires 1y; add_header Cache-Control "public, immutable, max-age=31536000"; access_log off; } location ~* \.(?:css|js|woff2?|ttf|otf|eot)$ { expires 30d; add_header Cache-Control "public, max-age=2592000"; access_log off; } location ~* \.(?:png|jpe?g|gif|svg|webp|avif|ico)$ { expires 30d; add_header Cache-Control "public, max-age=2592000"; access_log off; } # Маршрутизация: Astro генерит dir/index.html location / { try_files $uri $uri/ $uri.html =404; } error_page 404 /404.html; location = /404.html { internal; } }