が助けを必要としていますあなたがそれをコンパイルすることにより、箱から出してHTTP/2サーバープッシュを持つことができるしていますngx_http_v2_module
。
最近の追加に興味がある場合、これはほとんどの機能を追加したコミットです:hg.nginx.org: HTTP/2: server push。
その使用は比較的簡単です:ノードをプロキシしているサーバーにhttp2_push_preload
ディレクティブを追加し、Link
ヘッダのノードメイク使用から(W3仕様で説明したように - https://www.w3.org/TR/preload/#server-push-http-2)、その後、nginxのは、送信の仕事をしますサーバープッシュを示すh2フレーム。
たとえば、index.html
のエンドポイントを持つ/
エンドポイントがあるとしますが、image.svg
もクライアントにプッシュします。あなたがアップストリームサーバーを設定し、サーバー構成の可能性がnginxので
は、サーバーの設定にhttp2_push_preload
を有効にします。
# Add an upstream server to proxy requests to.
upstream sample-http1 {
server localhost:8080;
}
server {
# Listen on port 8443 with http2 support on.
listen 8443 http2;
# Enable TLS such that we can have proper HTTP2
# support using browsers.
ssl on;
ssl_certificate certs/cert_example.com.pem;
ssl_certificate_key certs/key_example.com.pem;
# Enable support for using `Link` headers to indicate
# origin server push.
http2_push_preload on;
# Act as a reverse proxy for requests going to /proxy/*.
#
# Because we don't want to rewrite our endpoints in the
# Node app, rewrite the path such that `/proxy/lol` ends up
# as `/lol`.
location/{
proxy_pass http://sample-http1;
}
}
あなたが通常行うだろうと次にNodeJSアプリで、あなたは/
を果たすと思いますが、応答に余分Link
ヘッダを追加します。
response.setHeader('Link', '</image.svg>; rel=preload; as=image');
PS:ええ、あなたがそれらの角括弧を保つだろう。私はそれらを取り替えるべきではありません。
ちょうど与えられた(いくつかのデバッグのヒントと共に)例は、ここに完全に書かれています:https://ops.tips/blog/nginx-http2-server-push/。
Nginx 1.9.5+は、外部モジュールを使用せずにHTTP/2をサポートしています。 –
はい、サーバーをプッシュしないでhttp2をアップストリームしない –
解決策は見つかりましたか? – mz3