Proxying websocket (to e.g. tomcat)

Valentin V. Bartenev vbart at nginx.com
Thu Feb 21 16:03:52 UTC 2013


On Thursday 21 February 2013 19:55:45 Nikolai Zhubr wrote:
> 21.02.2013 18:30, Valentin V. Bartenev wrote:
> [...]
>> > Yes, it's possible with 1.3.13. And yes, you need some additional
> > configuration.
> > 
> > Example:
> > location /examples/websocket {
> > 
> > proxy_pass http://127.0.0.1:8080;
> > proxy_http_version 1.1;
> > proxy_set_header Upgrade $http_upgrade;
> > proxy_set_header Connection "upgrade";
> > 
> > }
>> Ah, this indeed helped! Now it works. Thank you very much.
>> Apparently such configuration implies that different kinds of
> connections (standard and websocket) can not be mixed in one "location"
> section? (As far as I understood it, magic headers do not get through
> directly, but essentially get reintroduced by these configuration
> settings?)
>
Not quite so. Actually, they can be mixed. That's why the $http_upgrade variable 
used. If there's no such header in request, then the variable is empty and the 
header won't be set.
You can also set the Connection header to different values depending on 
existence of the Upagrade header in a request.
Example:
 http {
 map $http_upgrade $conn_header {
 default upgrade;
 '' close;
 }
 server {
 ...
 location {
 proxy_pass http://127.0.0.1:8080;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection $conn_header;
 }
 }
http://nginx.org/r/map
 wbr, Valentin V. Bartenev
--
http://nginx.com/support.html
http://nginx.org/en/donation.html


More information about the nginx mailing list

AltStyle によって変換されたページ (->オリジナル) /