92 lines
4.7 KiB
Plaintext
92 lines
4.7 KiB
Plaintext
# Часть 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";
|
||
}
|
||
}
|