Використовуйте HTTP / 2.0 між nginx реверс-проксі та серверним серверами


19

Я використовую nginx як зворотний ssl-проксі перед серверним сервером, який може робити HTTP / 2.0.

Я помітив, що nginx подає запити на сервер резервного сервера через HTTP / 1.1, а не HTTP / 2.0. Чи можна сказати nginx використовувати замість нього незашифроване з'єднання HTTP / 2.0? Це збільшило б ефективність?


хоча специфікації http2 кажуть, що воно не потребує шифрування, nginx на даний момент не підтримує http2 без ssl.
Марко

Тож було б використовувати HTTP / 2.0, якби я вказав адресу https: //? Ну, то я думаю, я краще використовувати HTTP / 1.1. Немає сенсу зашифрувати трафік двічі, а продуктивність HTTP / 2.0 за допомогою ssl, ймовірно, не буде такою ж доброю, як HTTP / 1.1 без ssl, чи не так? Я маю на увазі, що такий спосіб робить зворотний ssl-proxy марним;)
S1lentSt0rm

Не важливо, якщо ви шифруєте трафік між переднім та серверним сервером, якщо вони перебувають на одній машині. що стосується продуктивності: http2 ist зовсім трохи швидше, ніж http1.1, навіть із шифруванням. не можу сказати, не намагаючись, чи це змінило б значення.
Марко

Відповіді:


21

Знайшов це: https://trac.nginx.org/nginx/ticket/923

Не планується впроваджувати підтримку HTTP / 2 в модулі проксі в осяжному майбутньому

Витяг з пошти, на яку посилається квиток:

Його реалізувати майже немає сенсу, оскільки головна перевага HTTP / 2 полягає в тому, що він дозволяє мультиплексувати багато запитів у межах одного з'єднання, тим самим [майже] видаляючи обмеження на кількість одночасних запитів - і такого обмеження немає під час розмови з власні мікстури. Більше того, все може навіть погіршитися при використанні HTTP / 2 для резервного копіювання, через те, що одне TCP-з'єднання використовується замість кількох.


9
Це виглядає так, що це означає, що ви не можете використовувати сервер HTTP / 2 Push, якщо ви звертаєтесь до nginx, навіть якщо резервний сервер інакше підтримує його, якщо до нього звертатися безпосередньо.
thomasrutter

3
Я використовую зворотні проксі-сервери nginx для немісцевих сайтів через повільне з'єднання, тому HTTP / 2 допоможе мені. Прикро, що розробники nginx не розглядали цей випадок використання :-(.
markhep

5

На жаль, nginx не підтримує проксі на сервер http / 2, на який посилається https://www.nginx.com/blog/http2-module-nginx/#QandA

Питання: Чи будете ви підтримувати HTTP / 2 також на верхній стороні, або підтримувати тільки HTTP / 2 на стороні клієнта?

Відповідь: На даний момент ми підтримуємо лише HTTP / 2 на стороні клієнта. Ви не можете налаштувати HTTP / 2 за допомогою proxy_pass. [Редактор - У початковій версії цього допису це речення було неправильно переписано як "Ви можете налаштувати HTTP / 2 за допомогою proxy_pass". Просимо вибачення за будь-яку плутанину, яку це може спричинити.]

Але який сенс HTTP / 2 на стороні резервного копіювання? Оскільки, як видно з орієнтирів, HTTP / 2 не має великої користі для мереж із низькою затримкою, таких як підключення до потоку.

Крім того, у NGINX у вас є модуль keepalive, і ви можете налаштувати кеш keepalive. Основна перевага HTTP / 2 від продуктивності полягає в усуненні додаткових рукостискань, але якщо ви це зробите вже з кеш-келівом кеша, вам не потрібен HTTP / 2 на верхній стороні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.