Files
mappex/deploy/nginx-mappex.yappix.ru.conf
Renat UsmanovandClaude Opus 5.5 57a4411f57 MAPPEX: прототип межведомственного пункта наблюдения
Интерактивный дашборд по макету Figma «Government Dashboards»: карта РФ
(2D, вид с дрона в 3D, спутник, гибрид), ленты событий с вызовом ведомств
в 1 клик, ИИ-автопилот назначений, журнал, профиль, радар, статистика,
режимы «Ночное время», «Плохое зрение» и «Максимальная контрастность».
Vite + React + TypeScript, MapLibre GL, zustand. Лицензия MIT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 12:59:45 +03:00

83 lines
2.9 KiB
Plaintext

# MAPPEX — статический прототип на mappex.yappix.ru.
# Установка на сервере:
# sudo certbot certonly --webroot -w /var/www/certbot -d mappex.yappix.ru # сертификат (нужен блок :80)
# sudo cp deploy/nginx-mappex.yappix.ru.conf /etc/nginx/sites-available/mappex.yappix.ru
# sudo ln -sf /etc/nginx/sites-available/mappex.yappix.ru /etc/nginx/sites-enabled/
# sudo nginx -t && sudo systemctl reload nginx
server {
listen 80;
listen [::]:80;
server_name mappex.yappix.ru;
location ^~ /.well-known/acme-challenge/ {
root /var/www/certbot;
default_type "text/plain";
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name mappex.yappix.ru;
ssl_certificate /etc/letsencrypt/live/mappex.yappix.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mappex.yappix.ru/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/mappex;
index index.html;
# воркер MapLibre — ES-модуль: браузер требует JavaScript-тип
types {
text/html html;
text/css css;
application/javascript js mjs;
application/json json;
application/geo+json geojson;
image/svg+xml svg;
image/png png;
image/jpeg jpg jpeg;
font/woff2 woff2;
image/x-icon ico;
}
gzip on;
gzip_vary on;
gzip_comp_level 6;
gzip_types text/css application/javascript application/json application/geo+json image/svg+xml;
# файлы сборки с хешем в имени — навсегда
location /assets/ {
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
try_files $uri =404;
}
location /data/ {
add_header Cache-Control "public, max-age=86400" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
try_files $uri =404;
}
location / {
add_header Cache-Control "no-cache" always;
add_header Strict-Transport-Security "max-age=31536000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
try_files $uri $uri/ /index.html;
}
# заголовки безопасности — в каждом location: add_header там отменяет наследование с уровня server
access_log /var/log/nginx/mappex-yappix-access.log;
error_log /var/log/nginx/mappex-yappix-error.log;
}