mirror of
https://github.com/nginx/nginx.git
synced 2025-07-20 19:27:29 +08:00
Upstream: add support for connection level ALPN protocol negotiation.
This commit is prepared for HTTP/2 and HTTP/3 support. The ALPN protocol is now set per-connection in ngx_http_upstream_ssl_init_connection(), allowing proper protocol negotiation for each individual upstream connection regardless of SSL context sharing.
This commit is contained in:
parent
0bb7489cb2
commit
675ffc6456
@ -1767,6 +1767,23 @@ ngx_http_upstream_ssl_init_connection(ngx_http_request_t *r,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation
|
||||||
|
|
||||||
|
if (u->ssl_alpn_protocol.len) {
|
||||||
|
if (SSL_set_alpn_protos(c->ssl->connection, u->ssl_alpn_protocol.data,
|
||||||
|
u->ssl_alpn_protocol.len)
|
||||||
|
!= 0)
|
||||||
|
{
|
||||||
|
ngx_ssl_error(NGX_LOG_ERR, c->log, 0,
|
||||||
|
"SSL_set_alpn_protos() failed");
|
||||||
|
ngx_http_upstream_finalize_request(r, u,
|
||||||
|
NGX_HTTP_INTERNAL_SERVER_ERROR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
if (u->conf->ssl_session_reuse) {
|
if (u->conf->ssl_session_reuse) {
|
||||||
c->ssl->save_session = ngx_http_upstream_ssl_save_session;
|
c->ssl->save_session = ngx_http_upstream_ssl_save_session;
|
||||||
|
|
||||||
|
@ -390,6 +390,7 @@ struct ngx_http_upstream_s {
|
|||||||
|
|
||||||
#if (NGX_HTTP_SSL || NGX_COMPAT)
|
#if (NGX_HTTP_SSL || NGX_COMPAT)
|
||||||
ngx_str_t ssl_name;
|
ngx_str_t ssl_name;
|
||||||
|
ngx_str_t ssl_alpn_protocol;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ngx_http_cleanup_pt *cleanup;
|
ngx_http_cleanup_pt *cleanup;
|
||||||
|
Loading…
Reference in New Issue
Block a user