Sử dụng HTTP / 2.0 giữa máy chủ web ngược nginx và máy chủ web phụ trợ


19

Tôi sử dụng nginx làm proxy ngược ssl trước máy chủ web phụ trợ có khả năng thực hiện HTTP / 2.0.

Tôi nhận thấy rằng nginx ủy quyền các yêu cầu đến máy chủ phụ trợ thông qua HTTP / 1.1 chứ không phải HTTP / 2.0. Thay vào đó, có thể yêu cầu nginx sử dụng kết nối HTTP / 2.0 chưa được mã hóa không? Điều này sẽ tăng hiệu suất?


mặc dù thông số kỹ thuật http2 nói rằng nó không yêu cầu mã hóa, hiện tại nginx không hỗ trợ http2 mà không có ssl.
Marco

Vì vậy, nó sẽ sử dụng HTTP / 2.0 nếu tôi đã chỉ định địa chỉ https: //? Chà, tôi đoán là tôi tốt hơn khi sử dụng HTTP / 1.1. Sẽ không có ý nghĩa khi mã hóa lưu lượng hai lần và hiệu suất của HTTP / 2.0 với ssl có thể sẽ không tốt bằng HTTP / 1.1 nếu không có ssl, phải không? Ý tôi là, kiểu đó làm cho proxy ngược ssl trở nên vô dụng;)
S1lentSt0rm

Sẽ không có vấn đề gì nếu bạn mã hóa lưu lượng giữa máy chủ trước và máy chủ phụ nếu chúng ở trên cùng một máy. về hiệu năng: http2 ist nhanh hơn một chút so với http1.1, ngay cả với mã hóa. Không thể nói mà không thử nếu nó sẽ làm cho một sự khác biệt.
Marco

Câu trả lời:


21

Tìm thấy cái này: https://trac.nginx.org/nginx/ticket/923

Không có kế hoạch triển khai hỗ trợ HTTP / 2 trong mô-đun proxy trong tương lai gần

Trích từ một thư được tham chiếu trong vé:

Hầu như không có ý nghĩa gì để thực hiện nó, vì lợi ích chính của HTTP / 2 là nó cho phép ghép nhiều yêu cầu trong một kết nối, do đó [gần như] loại bỏ giới hạn về số lượng yêu cầu tương tự - và không có giới hạn như vậy khi nói chuyện với phụ trợ của riêng bạn. Hơn nữa, mọi thứ thậm chí có thể trở nên tồi tệ hơn khi sử dụng HTTP / 2 cho các phụ trợ, do kết nối TCP đơn được sử dụng thay vì nhiều kết nối.


9
Có vẻ như điều này có nghĩa là bạn không thể sử dụng HTTP / 2 Server Push nếu bạn đang ủy quyền bằng nginx, ngay cả khi máy chủ phụ trợ sẽ hỗ trợ nếu không được truy cập trực tiếp.
thomasrutter

3
Tôi sử dụng proxy ngược nginx cho các trang web không phải cục bộ trên các kết nối chậm để HTTP / 2 sẽ giúp tôi. Thật xấu hổ khi các nhà phát triển nginx chưa xem xét trường hợp sử dụng đó :-(.
markshep

5

Đáng buồn là nginx không hỗ trợ proxy cho máy chủ phụ trợ http / 2, được tham chiếu từ https://www.nginx.com/blog/http2-module-nginx/#QandA

H: Bạn cũng sẽ hỗ trợ HTTP / 2 ở phía thượng nguồn hay chỉ hỗ trợ HTTP / 2 ở phía máy khách?

Trả lời: Hiện tại, chúng tôi chỉ hỗ trợ HTTP / 2 ở phía máy khách. Bạn không thể định cấu hình HTTP / 2 với proxy_pass. [Trình chỉnh sửa - Trong phiên bản gốc của bài đăng này, câu này được phiên âm không chính xác là Tên Bạn có thể định cấu hình HTTP / 2 bằng proxy_pass. Chúng tôi xin lỗi vì bất kỳ sự nhầm lẫn nào có thể gây ra.]

Nhưng điểm HTTP / 2 ở phía phụ trợ là gì? Bởi vì như bạn có thể thấy từ các điểm chuẩn, HTTP / 2 không có nhiều lợi ích cho các mạng có độ trễ thấp như các kết nối ngược dòng.

Ngoài ra, trong NGINX, bạn có mô-đun giữ, và bạn có thể định cấu hình bộ đệm lưu giữ. Lợi ích hiệu suất chính của HTTP / 2 là loại bỏ các bắt tay bổ sung, nhưng nếu bạn đã làm điều đó với bộ đệm ổn định, bạn không cần HTTP / 2 ở phía thượng nguồn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.