2016-06-15 2 views
5

У нас есть веб-сервер Java, который способен обслуживать контент через H2C (HTTP/2 незашифрованные)Обратного прокси HTTP/2 от h2 до H2C

Мы хотели бы, чтобы обратные прокси-соединение, установленное с использованием h2 (т.е. стандартной HTTP/2 через SSL) на java-сервер в h2c.

Включение HTTP/2 на nginx достаточно просто, и обработка входящих соединений h2 работает нормально.

Как мы можем сообщить nginx о прокси-соединении с использованием h2c, а не http/1.1?

Примечание: не-Nginx решение может быть приемлемым

server { 
    listen  443 ssl http2 default_server; 
    server_name localhost; 

    ssl_certificate  /opt/nginx/certificates/???.pem; 
    ssl_certificate_key /opt/nginx/certificates/???.pk8.key.pem; 

    ssl_session_cache shared:SSL:1m; 
    ssl_session_timeout 5m; 

    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

    location/{ 
     proxy_pass http://localhost:8080/; ## <---- h2c here rather than http/1.1 
    } 
} 

ЗАКЛЮЧЕНИЕ (июнь 2016)

Это может быть сделано с помощью HAProxy файл конфигурации так просто, как это показано ниже.

Запрос (HttpServletRequest)req.getProtocol() явно возвращает HTTP/2.0

global 
tune.ssl.default-dh-param 1024 

defaults 
timeout connect 10000ms 
timeout client 60000ms 
timeout server 60000ms 

frontend fe_http 
mode http 
bind *:80 
# Redirect to https 
redirect scheme https code 301 

frontend fe_https 
mode tcp 
bind *:443 ssl no-sslv3 crt mydomain.pem ciphers TLSv1.2 alpn h2,http/1.1 
default_backend be_http 

backend be_http 
mode tcp 
server domain 127.0.0.1:8080 
+2

Я предполагаю, что nginx не поддерживает это. http://nginx.org/r/proxy_http_version –

+0

@AlexeyTen надеется, что это скоро .. Пошел с haproxy тем временем –

+0

Я бы запросил значение в этом. Основным преимуществом HTTP/2 является подключение к клиент-серверу с высокой задержкой и, тем более, для соединений сервер-сервер с низкой задержкой. HTTP/2 станет будущим для большинства подключений (в том числе от сервера к серверу в конечном итоге), но отсутствие поддержки в настоящее время говорит о том, насколько это новое и, следовательно, целесообразно ли перейти к этому только на основе ограниченных возможностей , Просто мое мнение - и я большой поклонник HTTP/2 для клиентов, поэтому не пытаюсь преуменьшить преимущества там. –

ответ

2

HAProxy поддерживает это.

HAProxy может выгружать TLS и пересылать на сервер, который говорит h2c.

Подробная информация о том, как настроить эту конфигурацию, доступна в this blog post.

+0

Спасибо. Попытка сейчас. Я отчитаю результаты –

+0

@BrunoGrieder, из любопытства, что такое серверный сервер, который говорит 'h2c'? – sbordet

+0

Мы используем Jetty embedded 9.3.9 –

Смежные вопросы