Score:0

พร็อกซีย้อนกลับที่โปร่งใสอย่างสมบูรณ์

ธง mx

ฉันกำลังพยายามตั้งค่าต่อไปนี้:

âââââââââââââââââ âââ ââââââââââââââ ââââââââ ââââââââ âââ    
â â â â â â    
â เราเตอร์ â â â âเซิร์ฟเวอร์ 1 â    
â NAT âส่งต่อพอร์ตâ â â â    
â â ââââââââ⺠â เซิร์ฟเวอร์ 0 â âHTTP > â    
â â â â âHTTPS â    
â â â 1.example.com âââââââââââ⺠âเปลี่ยนเส้นทาง â    
â â â 2.example.com âââââ âââââââ ââââ    
âââââââââââââââââ âââ ââââââââââââââ ââââââââ â 192.168.178.8 
                                     192.168.178.4 â                       
                                                        â âââââââââââ         
                                                        â â â         
                                                        â â â         
                                                        â âเซิร์ฟเวอร์ 2 â         
                                                        ââ⺠â â         
                                                            âHTTP เท่านั้นâ         
                                                            â         
                                                            âââââââââââ         
                                                            192.168.178.7       

ฉันต้องการให้เซิร์ฟเวอร์ 0 ทำหน้าที่เป็นพร็อกซีโปร่งใสอย่างสมบูรณ์ที่ส่งต่อทราฟฟิกเท่านั้น เพื่อให้ไคลเอนต์ไม่ได้สร้างการเชื่อมต่อ TLS กับเซิร์ฟเวอร์ 0 แต่โดยตรงกับเซิร์ฟเวอร์ 1/2 และการสร้างใบรับรองอัตโนมัติตามความท้าทาย HTTP-01 และการต่ออายุบนเซิร์ฟเวอร์ 1/2 ยังคงใช้งานได้

Bravo avatar
us flag
ไม่แน่ใจ แต่ [สิ่งนี้](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#transports)จะช่วยได้หรือไม่
in flag
ไม่ได้ผล Server0 ต้องการอย่างน้อยเพื่อทำ SNI เพื่อตัดสินใจว่าเซิร์ฟเวอร์ใดควรจัดการคำขอ คุณต้องยุติ SSL ที่ server0 (หรือสามารถถอดรหัสแพ็คเก็ตเพื่อส่งต่อได้อย่างถูกต้อง)
djdomi avatar
za flag
คุณสามารถใช้ปลาหมึกและกำหนด 2 เส้นทางสำหรับโฮสต์นั้น
us flag
คุณสามารถใช้ nginx บน Server0 กับสตรีมโมดูลพร็อกซี TCP nginx สามารถแยกวิเคราะห์ฟิลด์ TLS SNI จากสตรีมและส่งสตรีมไปยังเซิร์ฟเวอร์ตาม SNI https://serverfault.com/questions/1023756/nginx-stream-map-with-wildcard มีการกำหนดค่าที่คุณสามารถเริ่มต้นได้
Score:1
ธง mx

แก้ไข: หากคุณกังวลเกี่ยวกับการเชื่อมต่อระหว่าง reverse proxy ของคุณ (ซึ่งยุติอุโมงค์ SSL) และเซิร์ฟเวอร์เนื้อหาที่ไม่ปลอดภัย แม้ว่าวิธีนี้จะใช้งานได้และปลอดภัย คุณอาจควรกำหนดค่า upstream SSL หรืออุโมงค์ที่ปลอดภัย เช่น SSH หรือ IPSEC ระหว่าง เซิร์ฟเวอร์เนื้อหาและพร็อกซีย้อนกลับของคุณ


ฉันทำให้มันใช้งานได้:

โครงสร้างไฟล์:

ngnix/
    กำหนดค่า/
        nginx.conf
    http_server_name.js
    นักเทียบท่า-compose.yml

nginx.conf

load_module โมดูล/ngx_stream_js_module.so;

เหตุการณ์ {}

ลำธาร {
    js_import หลักจาก http_server_name.js;
    js_set $preread_server_name main.get_server_name;

    แผนที่ $preread_server_name $http {
        1.example.com server1_backend_http;
        2.example.com server2_backend_http;
    }

    แผนที่ $ssl_preread_server_name $https {
        1.example.com server1_backend_https;
        2.example.com server2_backend_https;
    }

    ต้นน้ำ server1_backend_http {
        เซิร์ฟเวอร์ 192.168.178.8:80;
    }
    
    อัพสตรีมเซิร์ฟเวอร์1_backend_https {
        เซิร์ฟเวอร์ 192.168.178.8:443;
    }

    ต้นน้ำ server2_backend_http {
        เซิร์ฟเวอร์ 192.168.178.7:80;
    }

    เซิร์ฟเวอร์ {
        ฟัง 443;  
        ssl_preread บน;
        proxy_pass $https;
    }

    เซิร์ฟเวอร์ {
        ฟัง 80;
        js_preread main.read_server_name;
        proxy_pass $http;
    }
}

นักเทียบท่า-compose.yml

รุ่น: '3'

บริการ:
  ngnix:
    ภาพ: nginx
    ชื่อคอนเทนเนอร์: ngnix
    รีสตาร์ท: เว้นแต่จะหยุด
    ปริมาณ:
      - ./config/ngnix.conf:/etc/nginx/nginx.conf:ro
      - ./config/http_server_name.js:/etc/nginx/http_server_name.js:ro
    พอร์ต:
      - "192.168.178.4:80:80"
      - "192.168.178.4:443:443"

http_server_name.js

var server_name = '-';

/**
 * อ่านชื่อเซิร์ฟเวอร์จากสตรีม HTTP
 *
 * @param s
 *   ลำธาร.
 */
ฟังก์ชัน read_server_name (s) {
  s.on ('อัปโหลด', ฟังก์ชัน (ข้อมูล, แฟล็ก) {
    ถ้า (data.length || flags.last) {
      s.done();
    }

    // หากเราพบส่วนหัวของโฮสต์
    var n = data.indexOf('\r\nโฮสต์: ');
    ถ้า (n != -1) {
      // กำหนดจุดเริ่มต้นของค่าส่วนหัวของโฮสต์และของส่วนหัวถัดไป
      var start_host = n + 8;
      var next_header = data.indexOf('\r\n', start_host);

      // แยกค่าส่วนหัวของโฮสต์
      server_name = data.substr (start_host, next_header - start_host);

      // ลบพอร์ตหากได้รับ
      var port_start = server_name.indexOf(':');
      ถ้า (port_start != -1) {
        server_name = server_name.substr(0, port_start);
      }
    }
  });
}

ฟังก์ชัน get_server_name (s) {
  กลับ server_name;
}

ส่งออกค่าเริ่มต้น {read_server_name, get_server_name}

เอกสาร:
ngx_http_upstream_module
ngx_http_map_module
ngx_stream_proxy_module

แก้ไข:
อ่าน โพสต์บล็อกนี้ สำหรับข้อมูลเพิ่มเติม

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา