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.