# Enable HTTP2 in one of several name-based servers

**URL:** <https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835>\
**Category:** NGINX\
**Created:** [June 22, 2016, 11:33pm UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835 "2016-06-22T23:33:19Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sadaf\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@Sadaf\_N](https://www.ruby-forum.com/u/Sadaf_N)\
**Post date:** [June 22, 2016, 11:33pm UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835/1 "2016-06-22T23:33:19Z")

</div>

Hi,

Is it possible to enable http2 in only one of several name-based  
servers?

I have the following scenario:

server {  
listen 443 ssl;  
server\_name [www.example.com](http://www.example.com);  
ssl\_certificate www.example.com.crt;  
…  
}

server {  
listen 443 ssl http2;  
server\_name [www.example.org](http://www.example.org);  
ssl\_certificate www.example.org.crt;  
…  
}

Enabling http2 in the second server makes the first respond http2 as  
well.

In my use case I have a few servers using modules that are not  
http2-compatible yet.

Is there anything I’m missing?

Thanks!

---

<div class="post-metadata">

**Author:** ![Marcelo\_MD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/898d66/32.png) [@Marcelo\_MD](https://www.ruby-forum.com/u/Marcelo_MD)\
**Post date:** [June 22, 2016, 11:36pm UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835/2 "2016-06-22T23:36:14Z")

</div>

On Wednesday 22 June 2016 18:32:47 Marcelo MD wrote:

> Hi,
> 
> Is it possible to enable http2 in only one of several name-based servers?

[..]

No, it’s not possible.

wbr, Valentin V. Bartenev

---

<div class="post-metadata">

**Author:** ![Marcelo\_MD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/898d66/32.png) [@Marcelo\_MD](https://www.ruby-forum.com/u/Marcelo_MD)\
**Post date:** [June 23, 2016, 11:28am UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835/3 "2016-06-23T11:28:54Z")

</div>

On Thursday 23 June 2016 04:35:45 itpp2012 wrote:

> 

What effect do you expect? Since clients are able to request different  
hosts  
using single HTTP/2 connection, closing the connection in one server  
block  
will break everything.

wbr, Valentin V. Bartenev

---

<div class="post-metadata">

**Author:** ![Marcelo\_MD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/898d66/32.png) [@Marcelo\_MD](https://www.ruby-forum.com/u/Marcelo_MD)\
**Post date:** [June 23, 2016, 10:36am UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835/4 "2016-06-23T10:36:19Z")

</div>

## Valentin V. Bartenev Wrote:

> > Is it possible to enable http2 in only one of several name-based  
> > servers?
> 
> [..]
> 
> No, it’s not possible.

Would it be a big (api) change to add a server block session flag?

ngx\_http\_v2\_init(ngx\_event\_t _rev)  
…  
if ( h2scf.no\_http2 ) { /_ example server block flag \*/  
ngx\_log\_debug0(NGX\_LOG\_DEBUG\_HTTP, c-\>log, 0, “http2 disabled in  
server  
context”);  
ngx\_http\_close\_connection(c);  
return;  
}  
…  
c-\>log-\>action = “processing HTTP/2 connection”;

Posted at Nginx Forum:  
[https://forum.nginx.org/read.php?2,267795,267801#msg-267801](https://forum.nginx.org/read.php?2,267795,267801#msg-267801)

---

<div class="post-metadata">

**Author:** ![Marcelo\_MD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/898d66/32.png) [@Marcelo\_MD](https://www.ruby-forum.com/u/Marcelo_MD)\
**Post date:** [June 23, 2016, 12:06pm UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835/5 "2016-06-23T12:06:52Z")

</div>

Valentin V. Bartenev Wrote:

> What effect do you expect? Since clients are able to request  
> different hosts  
> using single HTTP/2 connection, closing the connection in one server  
> block  
> will break everything.

I’m just venting an (untested) idea, some other way to tell the client  
to  
revert back to pre-http2 connections when hitting a server block, maybe  
a  
simple return would be enough.

connect [site.ru](http://site.ru) (h2)  
connect.h2 [site2.ru](http://site2.ru) (deny h2, client should revert to http(s))

Posted at Nginx Forum:  
[https://forum.nginx.org/read.php?2,267795,267808#msg-267808](https://forum.nginx.org/read.php?2,267795,267808#msg-267808)

---

<div class="post-metadata">

**Author:** ![Marcelo\_MD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/898d66/32.png) [@Marcelo\_MD](https://www.ruby-forum.com/u/Marcelo_MD)\
**Post date:** [June 23, 2016, 3:36pm UTC](https://www.ruby-forum.com/t/enable-http2-in-one-of-several-name-based-servers/244835/6 "2016-06-23T15:36:14Z")

</div>

Ok,

What about the other way around. Is it possible to disable http2 for one  
server block, via config or via code?

Other than that, what are the alternatives? One listen on one IP for  
http2  
and on another for http1?

Thanks!

On Thu, Jun 23, 2016 at 7:06 AM, itpp2012 [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
