Files
mdm-ordinis/docs/nginx.conf
T
Zimin A.N. 425e5319db fix(docs): тихо отвечать 204 на .map запросы
Diplodoc CLI 4.60 не генерит sourcemaps, но оставляет
`//# sourceMappingURL=app.css.map` комментарии в JS/CSS bundles.
DevTools тянет .map файлы → 404 в console (6 ошибок на /docs/).

Nginx теперь возвращает 204 No Content для *.map под /docs/ —
DevTools тихо проглатывает, console зелёная.
2026-05-08 08:53:06 +03:00

64 lines
2.0 KiB
Nginx Configuration File

# Ordinis Integrator Guide — nginx serving static HTML на /docs/.
# Diplodoc генерирует relative links — alias корректно работает без rewrite.
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
access_log /dev/stdout;
error_log /dev/stderr;
# K8s probe.
location = /healthz {
access_log off;
return 200 "ok\n";
add_header Content-Type text/plain;
}
# Source maps: Diplodoc CLI 4.60 не генерит .map файлы, но оставляет
# `//# sourceMappingURL=` комментарии в JS/CSS. DevTools пытается тянуть,
# получает 404 — шум в console. Возвращаем 204 No Content тихо.
location ~* "^/docs/.*\.map$" {
access_log off;
log_not_found off;
return 204;
}
# Static assets (Diplodoc CLI 4.60 bug: HTML refs hashed names типа
# `_bundle/app-34c68624e23be7ce.css`, но actual файл — `app.css` (без
# hash). Strip hash в nginx через rewrite: `name-<hash>.ext` → `name.ext`.
location ~* "^/docs/(_bundle|_assets)/(.+?)-[a-f0-9]{8,}(\.[a-z0-9]+)$" {
alias /usr/share/nginx/html/$1/$2$3;
expires 1y;
add_header Cache-Control "public, immutable";
}
# Non-hashed assets (fallback).
location ~* ^/docs/((_bundle|_assets)/.*\.(css|js|woff2?|ttf|eot|svg|png|jpg|jpeg|ico|map|json))$ {
alias /usr/share/nginx/html/$1;
expires 1y;
add_header Cache-Control "public, immutable";
try_files $uri =404;
}
# Documentation pages (HTML).
location /docs/ {
alias /usr/share/nginx/html/;
index index.html;
try_files $uri $uri/ $uri.html =404;
expires 5m;
add_header Cache-Control "public, must-revalidate";
}
# Redirect /docs (без trailing slash) → /docs/.
location = /docs {
return 301 /docs/;
}
# Security headers.
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
}