Điểm:0

Proxy đảo ngược hoàn toàn trong suốt

lá cờ mx

Tôi đang cố gắng thiết lập như sau:

âââââââââââââââââ âââ ââââââââââââââ ââââââââ ââââââââ âââ    
â â â â â â    
â Bộ định tuyến â â â âServer 1 â    
â NAT âCổng chuyển tiếpâ â â â    
â â ââââââââ⺠â Máy chủ 0 â âHTTP > â    
â â â â âHTTPS â    
â â â 1.example.com âââââââââââ⺠âredirect â    
â â â 2.example.com âââââ âââââââ ââââ    
âââââââââââââââââ âââ ââââââââââââââ ââââââââ â 192.168.178.8 
                                     192.168.178.4 â                       
                                                        â âââââââââââ         
                                                        â â â         
                                                        â â â         
                                                        â âMáy chủ 2 â         
                                                        ââ⺠â â         
                                                            âchỉ HTTPâ         
                                                            â â         
                                                            âââââââââââ         
                                                            192.168.178.7       

Tôi muốn máy chủ 0 hoạt động như một proxy hoàn toàn trong suốt chỉ chuyển tiếp lưu lượng truy cập. Vì vậy, các máy khách không thiết lập kết nối TLS với máy chủ 0 mà trực tiếp với máy chủ 1/2 và việc tạo và gia hạn chứng chỉ tự động dựa trên thử thách HTTP-01 trên máy chủ 1/2 vẫn hoạt động.

Bravo avatar
lá cờ us
không chắc, nhưng liệu [điều này](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#transports) có giúp được gì không?
lá cờ in
Điều đó không hiệu quả. Server0 ít nhất cần thực hiện SNI để quyết định máy chủ nào sẽ xử lý yêu cầu. Bạn cần chấm dứt SSL tại server0. (Hoặc có thể giải mã các gói để chuyển tiếp chúng đúng cách)
djdomi avatar
lá cờ za
bạn có thể sử dụng mực và xác định 2 tuyến cho máy chủ đó
lá cờ us
Bạn có thể sử dụng nginx trên Server0 với mô-đun proxy luồng TCP. nginx có thể phân tích cú pháp trường TLS SNI từ luồng và chuyển luồng đến máy chủ dựa trên SNI. https://serverfault.com/questions/1023756/nginx-stream-map-with-wildcard chứa cấu hình mà bạn có thể bắt đầu.
Điểm:1
lá cờ mx

Chỉnh sửa: Nếu bạn lo lắng về kết nối giữa proxy ngược của bạn (kết thúc đường hầm SSL) và máy chủ nội dung không được bảo mật, mặc dù điều này hoạt động và an toàn, bạn có thể nên định cấu hình SSL ngược dòng hoặc đường hầm an toàn như SSH hoặc IPSEC giữa máy chủ nội dung và proxy ngược của bạn.


Tôi đã làm cho nó hoạt động:

Cấu trúc tệp:

ngnix/
    cấu hình/
        nginx.conf
    http_server_name.js
    docker-compose.yml

nginx.conf

mô-đun load_module/ngx_stream_js_module.so;

sự kiện {}

dòng {
    js_import chính từ http_server_name.js;
    js_set $preread_server_name main.get_server_name;

    bản đồ $preread_server_name $http {
        1.example.com server1_backend_http;
        2.example.com server2_backend_http;
    }

    bản đồ $ssl_preread_server_name $https {
        1.example.com server1_backend_https;
        2.example.com server2_backend_https;
    }

    ngược dòng server1_backend_http {
        máy chủ 192.168.178.8:80;
    }
    
    máy chủ ngược dòng1_backend_https {
        máy chủ 192.168.178.8:443;
    }

    ngược dòng server2_backend_http {
        máy chủ 192.168.178.7:80;
    }

    người phục vụ {
        nghe 443;  
        ssl_preread on;
        proxy_pass $https;
    }

    người phục vụ {
        nghe 80;
        js_preread main.read_server_name;
        proxy_pass $http;
    }
}

docker-compose.yml

phiên bản: '3'

dịch vụ:
  ngnix:
    hình ảnh: nginx
    container_name: ngnix
    khởi động lại: trừ khi dừng
    khối lượng:
      - ./config/ngnix.conf:/etc/nginx/nginx.conf:ro
      - ./config/http_server_name.js:/etc/nginx/http_server_name.js:ro
    cổng:
      - "192.168.178.4:80:80"
      - "192.168.178.4:443:443"

http_server_name.js

var server_name = '-';

/**
 * Đọc tên máy chủ từ luồng HTTP.
 *
 * @param s
 *   Dòng.
 */
hàm read_server_name(s) {
  s.on('tải lên', hàm (dữ liệu, cờ) {
    if (data.length || flags.last) {
      s.done();
    }

    // Nếu chúng ta có thể tìm thấy tiêu đề Host.
    var n = data.indexOf('\r\nHost: ');
    nếu (n != -1) {
      // Xác định điểm bắt đầu của giá trị Host header và của header tiếp theo.
      var start_host = n + 8;
      var next_header = data.indexOf('\r\n', start_host);

      // Trích xuất giá trị tiêu đề Host.
      server_name = data.substr(start_host, next_header - start_host);

      // Xóa cổng nếu được cung cấp.
      var port_start = server_name.indexOf(':');
      nếu (port_start != -1) {
        server_name = server_name.substr(0, port_start);
      }
    }
  });
}

hàm get_server_name(s) {
  trả về server_name;
}

xuất mặc định {read_server_name, get_server_name}

Tài liệu:
ngx_http_upstream_module
ngx_http_map_module
ngx_stream_proxy_module

Chỉnh sửa:
Đọc bài đăng trên blog này để biết thêm thông tin

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.