Editați | ×:
Dacă sunteți îngrijorat de conexiunea dintre proxy-ul dvs. invers (care termină tunelul SSL) și serverul de conținut care nu este securizat, deși acest lucru funcționează și este sigur, ar fi mai bine să configurați SSL în amonte sau un tunel securizat precum SSH sau IPSEC între serverul de conținut și proxy-ul dvs. invers.
L-am pus sa functioneze:
Structura fișierului:
ngnix/
config/
nginx.conf
http_server_name.js
docker-compose.yml
nginx.conf
load_module modules/ngx_stream_js_module.so;
evenimente {}
curent {
js_import main din http_server_name.js;
js_set $preread_server_name main.get_server_name;
harta $preread_server_name $http {
1.example.com server1_backend_http;
2.example.com server2_backend_http;
}
harta $ssl_preread_server_name $https {
1.example.com server1_backend_https;
2.example.com server2_backend_https;
}
server în amonte1_backend_http {
server 192.168.178.8:80;
}
server în amonte1_backend_https {
server 192.168.178.8:443;
}
server în amonte2_backend_http {
server 192.168.178.7:80;
}
Server {
asculta 443;
ssl_preread on;
proxy_pass $https;
}
Server {
asculta 80;
js_preread main.read_server_name;
proxy_pass $http;
}
}
docker-compose.yml
versiunea: '3'
Servicii:
ngnix:
imagine: nginx
container_name: ngnix
reporniți: dacă nu este oprit
volume:
- ./config/ngnix.conf:/etc/nginx/nginx.conf:ro
- ./config/http_server_name.js:/etc/nginx/http_server_name.js:ro
porturi:
- „192.168.178.4:80:80”
- „192.168.178.4:443:443”
http_server_name.js
var server_name = '-';
/**
* Citiți numele serverului din fluxul HTTP.
*
* @param s
* Curent.
*/
funcția read_server_name(s) {
s.on('upload', function (date, flags) {
if (data.length || steaguri.last) {
s.terminat();
}
// Dacă putem găsi antetul Host.
var n = data.indexOf('\r\nHost: ');
dacă (n != -1) {
// Determinați începutul valorii antetului gazdei și al următorului antet.
var start_host = n + 8;
var next_header = data.indexOf('\r\n', start_host);
// Extrageți valoarea antetului Host.
server_name = data.substr(start_host, next_header - start_host);
// Eliminați portul dacă este dat.
var port_start = server_name.indexOf(':');
if (port_start != -1) {
server_name = server_name.substr(0, port_start);
}
}
});
}
funcția get_server_name(s) {
returnează nume_server;
}
export implicit {read_server_name, get_server_name}
Documentație:
ngx_http_upstream_module
ngx_http_map_module
ngx_stream_proxy_module
Editați | ×:
Citit această postare pe blog pentru mai multe informatii