Điểm:0

Làm cách nào để đặt proxy ngược websocket với cả proxy_set_header và SSL được phép?

lá cờ vn

Tôi nhận được một dự án trong đó proxy ngược websocket bên ngoài được triển khai bởi luồng nginx.

Tuy nhiên, steam chỉ có nghĩa là "TCP" và nó bị mất các tính năng http như ghi IP của một mình tuyến đường.

Đây là cấu hình của lớp bên ngoài trong SSL được mã hóa:

dòng{ 
        ngược dòng mysvr {
            máy chủ 10.3.3.7:1111;
    }
        người phục vụ {
            nghe 3331 ; 
            ssl_preread on;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass mysvr;
    }
......

các proxy_set_header mệnh đề phải được nhận xét vì nginx không cho phép nó ở đây nếu không: Lệnh "proxy_set_header" không được phép ở đây

Và đây là cấu hình nginx trên máy 10.3.3.7:

http{   
     người phục vụ {
                nghe 1111 ssl;
                máy chủ_tên máy chủ cục bộ;
                ssl_certificate /etc/nginx/cert/server.crt;
                ssl_certificate_key /etc/nginx/cert/server.key;
                ssl_session_timeout 5 phút;
                tắt ssl_verify_client;
        địa điểm / {
            proxy_pass http://10.3.3.5:8888;
            proxy_http_version 1.1;
            proxy_set_header Nâng cấp $http_upgrade;
            proxy_set_header Kết nối "nâng cấp";
        }
......

Vì vậy, tôi đã cố gắng viết lại proxy ngược đầu tiên và bên ngoài thành loại http 1.1, proxy websocket thực thay vì kết nối TCP hoặc "luồng". Tôi đã chuyển mọi thứ ra khỏi dòng khung và đặt nó vào http dấu ngoặc và xóa nhận xét trước đó proxy_set_header, cuối cùng thêm vào ba mệnh đề websocket cụ thể ở cuối proxy ngược thứ hai và bên trong:

http {
       ngược dòng mysvr {
            máy chủ 10.3.3.7:1111;
    }
       người phục vụ {
           nghe 3331 ; 
           ssl_preread on;
           proxy_set_header Máy chủ $http_host;
           proxy_http_version 1.1;
           proxy_set_header Nâng cấp $http_upgrade;
           proxy_set_header Kết nối "nâng cấp";
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass mysvr;
    }
......

Nhưng lần này nginx đưa ra một lỗi:[emerg] Lệnh "ssl_preread" không được phép

Vì vậy, xung đột là:

Dưới hơi nước tôi không thể sử dụng proxy_set_header; trong khi dưới http 1.1 tôi không thể sử dụng ssl_preread.

Nhưng cả hai đều là những tính năng quan trọng trong trường hợp này:

Máy chủ phụ trợ thực cần biết IP của máy khách thực, do đó cần đóng dấu IP ở máy chủ bên ngoài vào tiêu đề; Máy chủ proxy bên ngoài bị cấm đọc lưu lượng trong suốt nhưng cho phép proxy ngược bên trong giải mã nó bằng SSL. Do đó, lưu lượng giữa phần phụ trợ thực 10.3.3.5 và proxy ngược bên trong 10.3.3.7 là trong suốt trong khi lưu lượng từ proxy ngược bên trong qua proxy ngược bên ngoài đến máy khách được mã hóa bằng cùng một SSL bởi nginx trên đảo ngược bên trong -Ủy quyền.

Tính năng bổ sung là chương trình phụ trợ thực 10.3.3.5 định tuyến qua 10.3.3.7 proxy ngược bên trong, định tuyến qua proxy ngược bên ngoài. Vì vậy, các tuyến proxy vpn và proxy đảo ngược là nhất quán.

Trong cài đặt này, có cách nào để đạt được 2 tính năng cùng một lúc không? Cảm ơn vì đã đọc.

Đă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.