62 lines
3.0 KiB
Plaintext
62 lines
3.0 KiB
Plaintext
# De TLS-terminatie van Electrum Gate, als los bestand, en dat is de hele truc.
|
|||
|
|
#
|
||
|
|
# nginx weigert te starten als een 'listen ... ssl' geen certificaat heeft, en
|
||
|
|
# welk certificaat dat wordt weet alleen de agent. Zolang dit blok in nginx.conf
|
||
|
|
# stond, kwam de server dus niet omhoog voordat er een keuze lag, en daarmee ook
|
||
|
|
# de web-UI niet: precies de pagina waarop die keuze gemaakt wordt. Een gebruiker
|
||
|
|
# zonder Zoraxy, of met twee kandidaten, zag daardoor helemaal niets en had geen
|
||
|
|
# enkele weg vooruit. Zo aangetroffen in 0.0.3.
|
||
|
|
#
|
||
|
|
# Nu staat het blok hier, en het command-blok van docker-compose.yml zet dit
|
||
|
|
# bestand pas in /var/lib/gate/tls/ zodra de agent cert.conf geschreven heeft.
|
||
|
|
# nginx.conf haalt die map op met een jokerteken, en een jokerteken dat niets
|
||
|
|
# matcht is voor nginx geen fout. Geen certificaat betekent dus: geen
|
||
|
|
# stream-blok, geen poort 50022, maar wel een werkende pagina die vertelt wat
|
||
|
|
# eraan mankeert.
|
||
|
|
#
|
||
|
|
# Dit is een template om dezelfde reden als de andere: bij een update ververst
|
||
|
|
# umbrelOS alleen een whitelist, en *.template staat daarin. Let daarom ook hier
|
||
|
|
# op het dollarteken: elke ${...} wordt bij het starten ingevuld, dus geen
|
||
|
|
# nginx-variabelen in dit bestand. Het log_format, dat er niet zonder kan, staat
|
||
|
|
# in stream-log.conf en wordt door het command-blok weggeschreven.
|
||
|
|
|
||
|
|
stream {
|
||
|
|
# Het log_format en de access_log, geschreven door het command-blok in
|
||
|
|
# docker-compose.yml.
|
||
|
|
include /var/lib/gate/stream-log.conf;
|
||
|
|
|
||
|
|
server {
|
||
|
|
# 50022 en niet 50002; de reden staat bij de ports-regel in
|
||
|
|
# docker-compose.yml.
|
||
|
|
listen 50022 ssl;
|
||
|
|
|
||
|
|
# ssl_certificate en ssl_certificate_key, geschreven door de agent op
|
||
|
|
# grond van wat er in de certificaatmappen staat en wat de gebruiker op
|
||
|
|
# het dashboard gekozen heeft. Daarom staat er hier geen domeinnaam meer
|
||
|
|
# in dit bestand. Dat dit bestand bestaat betekent dat cert.conf er is:
|
||
|
|
# het command-blok zet het er pas dan neer.
|
||
|
|
#
|
||
|
|
# nginx wil de VOLLEDIGE keten in ssl_certificate, dus het bestand van
|
||
|
|
# Zoraxy kan er ongewijzigd in. Splitsen in een servercertificaat en een
|
||
|
|
# CA-deel, zoals de oude stunnel-opzet deed, is hier juist fout.
|
||
|
|
include /var/lib/gate/cert.conf;
|
||
|
|
|
||
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||
|
|
|
||
|
|
# Een Electrum-wallet houdt een langlopende verbinding open die het
|
||
|
|
# grootste deel van de tijd stil is. De standaardwaarde van
|
||
|
|
# proxy_timeout is tien minuten, en die verbreekt zo'n verbinding dus
|
||
|
|
# zonder aanleiding; de wallet merkt dat pas als hij iets wil en meldt
|
||
|
|
# dan dat er geen data is. stunnel hanteerde hier twaalf uur, en dat
|
||
|
|
# verschil is bij de overstap naar nginx over het hoofd gezien.
|
||
|
|
proxy_timeout 12h;
|
||
|
|
proxy_connect_timeout 10s;
|
||
|
|
|
||
|
|
# Houdt de verbinding naar de backend levend en laat een verbroken
|
||
|
|
# verbinding sneller opvallen dan pas bij het volgende verzoek.
|
||
|
|
proxy_socket_keepalive on;
|
||
|
|
|
||
|
|
proxy_pass ${APP_ELECTRS_NODE_IP}:${APP_ELECTRS_NODE_PORT};
|
||
|
|
}
|
||
|
|
}
|