Nu știam cum să închid cu grație o conexiune cu un modul de flux, așa că nu sunt sigur dacă ar fi o soluție corectă, dar merită să încerc (puteți folosi orice port liber pentru serverul fals/upstream):
curent {
harta $ssl_preread_server_name $nume {
server.domeniu.com;
www.domeniu.com www;
manechin implicit;
}
server în amonte {
server backendip:443;
}
în amonte www {
server backendip2:443;
}
manechin în amonte {
backend 127.0.0.1:4343;
}
Server {
asculta 443;
proxy_pass $nume;
ssl_preread on;
}
Server {
asculta 4343;
întoarcere "";
}
}
Actualizați
După ce testez soluția de mai sus, pot confirma că este funcțională. Cu toate acestea, produce o intrare de jurnal de erori precum
WSARecv() a eșuat (10053: O conexiune stabilită a fost întreruptă de software-ul din mașina dvs. gazdă) în timp ce proxy și citiți din amonte, client: 127.0.0.1, server: 127.0.0.1:443, amonte: "127.0.0.1:4343" , octeți de la/către client:517/0, octeți de la/către amonte:0/517
Deci, după ce m-am gândit, am încercat asta:
http {
Server {
asculta 4343 ssl;
ssl_certificate /path/to/selfsigned.crt;
ssl_certificate_key /path/to/selfsigned.key;
întoarcere 444;
}
}
curent {
harta $ssl_preread_server_name $nume {
server.domeniu.com;
www.domeniu.com www;
manechin implicit;
}
server în amonte {
server backendip:443;
}
în amonte www {
server backendip2:443;
}
manechin în amonte {
backend 127.0.0.1:4343;
}
Server {
asculta 443;
proxy_pass $nume;
ssl_preread on;
}
}
Certificatul și cheia autosemnate pot fi create folosind următoarea comandă:
openssl req -nodes -new -x509 -subj "/CN=localhost" -keyout /path/to/selfsigned.key -out /path/to/selfsigned.crt
Acesta închide corect conexiunea.
Mai mult, chiar și asta a funcționat:
http {
Server {
asculta 80 default_server;
întoarcere 444;
}
}
curent {
harta $ssl_preread_server_name $nume {
server.domeniu.com;
www.domeniu.com www;
manechin implicit;
}
server în amonte {
server backendip:443;
}
în amonte www {
server backendip2:443;
}
manechin în amonte {
backend 127.0.0.1:80;
}
Server {
asculta 443;
proxy_pass $nume;
ssl_preread on;
}
}
Desigur, răsuci
se plânge de încercarea de strângere de mână pentru numărul incorect al versiunii SSL și există intrări amuzante în jurnalul de acces, cum ar fi
127.0.0.1 - - [05/Nov/2021:01:04:34 +0200] „\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03L\xF9[\xB2\x7F \x99\xB1(\xAC\xB4\x91}\xE2N\xC6H\xE3\xB3_\xD1\xEA\xA3C\x1D\xE5\xE5\xB6\x02\xDB\x04h\xB6 *\xCB\x0E\xC0\ xF5\xB7\xAF[y|\x1B\x14_\xC2g\xEA\xA2\x1E\xB4\xC4Bj3t\xE8d\xE72vm\xF2\x1B\x00>\x13\x02\x13\x03\x13\x, \xC00\x00\x9F\xCC\xA9\xCC\xA8\xCC\xAA\xC0+\xC0/\x00\x9E\xC0$\xC0(\x00k\xC0#\xC0'\x00g\xC0" 400 163 "- " "-"
dar jurnalul de erori este clar.