Reverse Proxying von HTTP / 2 von h2 nach h2c
ir haben einen Java-Webserver, der Inhalte über H2C (HTTP / 2-Klartext) bereitstellen kan
Wir möchten Proxy-Verbindungen, die unter Verwendung von h2 (d. H. Standard-HTTP / 2 über SSL) hergestellt wurden, zum Java-Server in h2c rückgängig machen.
Die Aktivierung von HTTP / 2 unter nginx ist einfach und die Verarbeitung eingehender H2-Verbindungen funktioniert problemlos.
Wie können wir nginx anweisen, die Verbindung über h2c anstatt über http / 1.1 zu proxyen?
Hinweis: Eine Nicht-Nginx-Lösung ist möglicherweise akzeptabel.
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
}
}
FAZI (Juni 2016)
Dies kann mit haproxy mithilfe einer Konfigurationsdatei durchgeführt werden, die so einfach wie die folgende ist.
Querying(HttpServletRequest)
req.getProtocol()
kehrt eindeutigHTTP/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