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

Daniel Griscom griscom at suitable.com
Sat May 11 15:05:18 UTC 2013


Thanks. I've been coming to that conclusion myself.

Take care,
Dan


At 7:00 PM +0400 5/11/13, Maxim Dounin wrote:
>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
>
>_______________________________________________
>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



More information about the nginx mailing list