Proxying based on protocol (e.g. "ws"/"wss")?

Maxim Dounin mdounin at mdounin.ru
Sat May 11 15:00:51 UTC 2013


Hello!

On Fri, May 10, 2013 at 02:35:35PM -0400, Daniel Griscom wrote:

> That's great information, but now I need to figure out how to
> selectively proxy to my websocket backend when $http_upgrade is
> "websocket". I see the following choices:
> 
> 1) Have nginx listen at port 80, and proxy all traffic to port XXXX
> if $http_upgrade is "websocket", or port YYYY if not. Then set up
> nginx to handle http traffic at port YYYY, and have my websocket
> backend handle websocket traffic at port XXXX.
> 
> 2) Investigate the much-maligned "if" statement.
> 
> 
> ... any other choices? Thoughts?

I would recommend using URI-based distinction instead (and 
location{} blocks as a result).  This would be most natural 
solution from nginx point of view.

> 
> 
> Thanks,
> Dan
> 
> 
> At 1:26 PM +0400 5/10/13, Maxim Dounin wrote:
> >Hello!
> >
> >On Fri, May 10, 2013 at 09:14:04AM +1200, Steve Holdoway wrote:
> >
> >> The scheme is available as... $scheme
> >
> >Yes, but WebSocket protocol uses http for handshake.  So the
> >scheme will be either "http" or "https".  WebSocket requests can
> >be identified based on Upgrade header, i.e. $http_upgrade
> >variable.
> >
> >>
> >> On Thu, 2013-05-09 at 14:45 -0400, Daniel Griscom wrote:
> >> > ... bump?
> >> >
> >> > (thanks,
> >> > Dan)
> >> >
> >> >
> >> > At 9:32 AM -0400 5/8/13, Daniel Griscom wrote:
> >> > >I'm an nginx newbie, and need use use it as a front end for a
> >> > >website that also handles websocket connections. I have the
> >> > >configuration set up so that requests to a specific URI match a
> >> > >location section, which then proxies the request to the websocket
> >> > >back end server, and it all works. (Very cool.)
> >> > >
> >> > >However, I was wondering if, rather than detecting requests to a
> >> > >specific location, I could proxy all "ws://" or "wss:// requests,
> >> > >independent of the URI being requested.
> >> > >
> >> > >Is there a way to proxy all requests with a given protocol?
> >> > >
> >> > >
> >> > >Thanks,
> >> > >Dan
> >> > >
> >> > >--
> >> > >Daniel T. Griscom             griscom at suitable.com
> >> > >Suitable Systems              http://www.suitable.com/
> >> > >1 Centre Street, Suite 204    (781) 665-0053
> >> > >Wakefield, MA  01880-2400
> >> > >
> >> > >_______________________________________________
> >> > >nginx mailing list
> >> > >nginx at nginx.org
> >> > >http://mailman.nginx.org/mailman/listinfo/nginx
> >> >
> >> >
> >>
> >> --
> >> Steve Holdoway BSc(Hons) MNZCS <steve at greengecko.co.nz>
> >> http://www.greengecko.co.nz
> >> MSN: steve at greengecko.co.nz
> >> Skype: sholdowa
> >>
> >> _______________________________________________
> >> nginx mailing list
> >> nginx at nginx.org
> >> http://mailman.nginx.org/mailman/listinfo/nginx
> >
> >--
> >Maxim Dounin
> >http://nginx.org/en/donation.html
> >
> >_______________________________________________
> >nginx mailing list
> >nginx at nginx.org
> >http://mailman.nginx.org/mailman/listinfo/nginx
> 
> 
> -- 
> Daniel T. Griscom             griscom at suitable.com
> Suitable Systems              http://www.suitable.com/
> 1 Centre Street, Suite 204    (781) 665-0053
> Wakefield, MA  01880-2400
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx mailing list