Files
netrunner-data/nginx/netrunner-ssl.conf
T
nineap 6e47498dc5
Deploy Observability / Deploy Observability Stack (push) Successful in 36s
Deploy / Deploy to Data VPS (push) Successful in 42s
nginx
2026-07-10 17:06:05 +07:00

92 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Часть 2/2 — деплой (deploy-nginx.yml) включает этот файл ТОЛЬКО когда на
# сервере уже есть сертификат /etc/letsencrypt/live/grafana.netrunner-vpn.com/
# (иначе nginx -t упадёт: ssl_certificate на несуществующий файл). До первого
# `certbot certonly` этот файл лежит на диске, но не подключён — только
# netrunner-http.conf, обслуживающий ACME-challenge.
#
# Обе площадки закрыты HTTP Basic Auth (доп. пароль ДО того, как запрос
# вообще дойдёт до Grafana/Vaultwarden) — см. deploy-nginx.yml про
# .htpasswd. Для Vaultwarden basic auth намеренно НЕ накрывает /api,
# /identity, /notifications — мобильные и десктоп-клиенты Bitwarden, а
# также браузерное расширение, не умеют проходить Basic Auth на этих
# путях (только сама веб-морда на "/" людьми открывается руками),
# закрыть их означало бы сломать синхронизацию всем клиентам.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name grafana.netrunner-vpn.com;
# Сертификат лежит в папке ПЕРВОГО домена из -d при выпуске (grafana...),
# даже несмотря на то что SAN-сертификат покрывает оба домена — так у
# certbot всегда, это не опечатка.
ssl_certificate /etc/letsencrypt/live/grafana.netrunner-vpn.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/grafana.netrunner-vpn.com/privkey.pem;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:3030;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Grafana Live (websocket) — используется для live-обновления панелей.
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name vault.netrunner-vpn.com;
ssl_certificate /etc/letsencrypt/live/grafana.netrunner-vpn.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/grafana.netrunner-vpn.com/privkey.pem;
client_max_body_size 525M; # вложения Vaultwarden
# Веб-морда ("/") — единственное место, которое реально открывают руками
# в браузере, поэтому единственное место с доп. паролем.
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# API/логин/синхронизация — сюда ходят мобильные приложения, десктоп-клиент
# и браузерное расширение напрямую, без Basic Auth (клиенты Bitwarden его
# на этих путях не поддерживают — добавить сюда auth_basic значило бы
# сломать синхронизацию всем, кроме веб-морды).
location ~ ^/(api|identity)/ {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Websocket-уведомления о синхронизации между устройствами — тоже без
# Basic Auth (по той же причине) и с апгрейдом соединения.
location /notifications/hub {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}