Puncte:0

Proxy invers complet transparent

drapel mx

Încerc să configurez următoarele:

âââââââââââââââ†âââ ââââââââââââ†ââââââââ ââââââââ âââ    
â â â â â â    
â Router â â â âServer 1 â    
â NAT âPort forwardâ â â â    
â â ââââââââ⺠â Server 0 â âHTTP > â    
â â â â âHTTPS â    
â â â 1.example.com âââââââââââ⺠âredirecționare â    
â â â 2.example.com âââââ âââââââ ââââ    
âââââââââââââââ†âââ ââââââââââââ†ââââââââ â 192.168.178.8 
                                     192.168.178.4 â                       
                                                        â âââââââââââ         
                                                        â â â         
                                                        â â â         
                                                        â âServer 2 â         
                                                        ââ⺠â â         
                                                            âNumai HTTPâ         
                                                            â â         
                                                            âââââââââââ         
                                                            192.168.178.7       

Vreau ca serverul 0 să acționeze ca un proxy complet transparent care redirecționează doar traficul. Pentru ca clienții să nu stabilească o conexiune TLS cu serverul 0, ci direct cu serverul 1/2 și generarea și reînnoirea automată a certificatelor bazate pe provocarea HTTP-01 pe serverul 1/2 încă funcționează.

Bravo avatar
drapel us
nu sunt sigur, dar [this](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#transports) ar ajuta cu nimic?
drapel in
Asta nu merge. Server0 trebuie cel puțin să facă SNI pentru a decide ce server ar trebui să gestioneze cererea. Trebuie să terminați SSL la server0. (Sau să puteți decripta pachetele pentru a le transmite corect)
djdomi avatar
drapel za
puteți folosi calmar și definiți 2 rute pentru acele gazde
drapel us
Puteți utiliza nginx pe Server0 cu modulul proxy TCP de flux. nginx poate analiza câmpul TLS SNI din flux și poate transmite fluxul către un server bazat pe SNI. https://serverfault.com/questions/1023756/nginx-stream-map-with-wildcard conține o configurație cu care puteți începe.
Puncte:1
drapel mx

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

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.