Chúng tôi có một máy ảo có địa chỉ IPv4 công cộng mà chúng tôi ví dụ.com
và *.example.com
điểm miền.
Chúng tôi có một số máy tính công nghệ thấp được phân phối đang thiết lập đường hầm/kết nối bảo vệ dây với máy ảo có thể truy cập công khai.
Chúng tôi muốn máy ảo phục vụ một trang web trên các cổng 80
/443
, chấp nhận kết nối ssh qua cổng 22
, và hơn thế nữa.
Chúng tôi muốn các máy tính công nghệ thấp có thể truy cập công khai, thông qua các tên miền phụ tương ứng như công nghệ thấp-01.example.com
, công nghệ thấp-02.example.com
, vân vân và các yêu cầu ủy quyền/định tuyến tới các địa chỉ IP cục bộ/bảo vệ dây tương ứng. Điều này sẽ hoạt động cho các trang web thông qua các cổng 80
/443
, kết nối ssh qua cổng 22
, và hơn thế nữa.
Chỉnh sửa: Lý tưởng nhất là chứng chỉ SSL phải được cung cấp từ các máy tính công nghệ thấp và kết nối SSL sẽ không bị chấm dứt trên máy ảo.
Chỉnh sửa: Lý tưởng nhất là các khóa riêng ssh để thiết lập kết nối với các máy tính công nghệ thấp không tồn tại trên máy ảo mà chỉ tồn tại trên máy khách.
Chỉnh sửa: Đối với ssh, chúng tôi có thể mở và định tuyến một cổng duy nhất cho mỗi máy tính công nghệ thấp từ công khai_IPv4:22xxx
đến cục bộ/dây bảo vệ_IP:22
Thật không may, sau hai ngày dùng thử cấu hình nginx và gặp lỗi, chúng tôi nhận ra rằng nhiệm vụ này có thể không thể giải quyết chỉ bằng nginx.
Lưu ý: ssh không gửi SNI; nginx không thể nghe trên cùng một cổng cho http
cũng như dòng
kết nối; và có thể nhiều vấn đề hơn.
Nhưng ngoài ra, chúng tôi hoàn toàn không có ý tưởng và bị choáng ngợp bởi cách tiếp cận nào có thể thực sự giải quyết đúng nhiệm vụ này.
(www\.)?example.com
â> IPv4 công khai â> trang web, ssh, v.v.
công nghệ thấp-01.example.com
â> IPv4 công khai â> ??? ~> 10.0.0.101
â> trang web, ssh, v.v.
công nghệ thấp-02.example.com
â> IPv4 công khai â> ??? ~> 10.0.0.102
â> trang web, ssh, v.v.
â¦
Cảm ơn lời khuyên và thời gian của bạn.
â
Chỉnh sửa: nginx sau dòng
config gần với những gì chúng tôi đang cố gắng đạt được. Nhược điểm duy nhất (có thể) là chúng tôi phải xác định cổng theo cách thủ công cho từng máy tính công nghệ thấp thay vì xử lý cổng này một cách linh hoạt như đối với kết nối SSL.
dòng {
bản đồ $ssl_preread_server_name $name {
ví dụ.com ví dụ.com;
www.example.com example.com;
công nghệ thấp-01.example.com công nghệ thấp-01.example.com;
công nghệ thấp-02.example.com công nghệ thấp-02.example.com;
}
ngược dòng example.com {
máy chủ 127.0.0.1:8443;
}
ngược dòng low-tech-01.example.com {
máy chủ 10.0.0.101:443;
}
thượng nguồn low-tech-02.example.com {
máy chủ 10.0.0.102:443;
}
người phục vụ {
nghe 443;
proxy_pass $name;
ssl_preread on;
}
người phục vụ {
nghe 22101 ;
proxy_pass 10.0.0.101:22;
}
người phục vụ {
nghe 22102 ;
proxy_pass 10.0.0.102:22;
}
â¦
}