Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Проксирование WSS траффика на одном порту с HTTPS

424 views
Skip to first unread message

Anatoly Molchanov

unread,
Jan 5, 2017, 3:20:03 PM1/5/17
to
Коллеги, добрый день.

На машине поднят websocket-сервер(WSS) на порту 9090 и https-сервер. Чем можно реализовать посещение страницы по адресу https://domain.com и подключение к веб-сокету по адресу wss://domain.com? Условное проксирование по протоколу, видимо.

Tim Sattarov

unread,
Jan 5, 2017, 3:30:02 PM1/5/17
to
On 05/01/17 03:12 PM, Anatoly Molchanov wrote:
> Коллеги, добрый день.
>
> На машине поднят websocket-сервер(WSS) на порту 9090 и https-сервер.
> Чем можно реализовать посещение страницы по адресу https://domain.com
> и подключение к веб-сокету по адресу wss://domain.com
> <http://domain.com>? Условное проксирование по протоколу, видимо.
Насколько я понимаю эти два протокола - нужно разделение по путям или
каким то образом детектить Upgrade заголовок и проксировать уже его.

Anatoly Molchanov

unread,
Jan 5, 2017, 3:50:02 PM1/5/17
to
Гуглил тему, видел Upgrade, но ничего не понял. В двух словах можете подсказать, почему "upgrade" и как его ловить?

Anatoly Molchanov

unread,
Jan 5, 2017, 4:40:03 PM1/5/17
to
разделять по адресам: https://domain.com/FASD/index.html и wss://domain.com/ASDF могу, но прокся(apache) путате GET'ы с WS

5 января 2017 г., 23:39 пользователь Anatoly Molchanov <ykd...@gmail.com> написал:

Tim Sattarov

unread,
Jan 5, 2017, 5:20:02 PM1/5/17
to


On 05/01/17 04:34 PM, Anatoly Molchanov wrote:
> разделять по адресам: https://domain.com/FASD/index.html и
> wss://domain.com/ASDF <http://domain.com/ASDF> могу, но прокся(apache)
> путате GET'ы с WS
>
> 5 января 2017 г., 23:39 пользователь Anatoly Molchanov
> <ykd...@gmail.com <mailto:ykd...@gmail.com>> написал:
>
> Гуглил тему, видел Upgrade, но ничего не понял. В двух словах
> можете подсказать, почему "upgrade" и как его ловить?
>
>

Про WSS: https://en.wikipedia.org/wiki/WebSocket
Про Upgrade: https://en.wikipedia.org/wiki/HTTP/1.1_Upgrade_header
Как реализовать прокси в nginx: https://www.nginx.com/blog/websocket-nginx/

Надеюсь помог :)

Tim Sattarov

unread,
Jan 5, 2017, 5:30:02 PM1/5/17
to
Вот, кстати, неплохая иллюстрация к handshake:
http://mgreau.com/posts/images/WebSocket_Protocol.png

Anatoly Pugachev

unread,
Jan 5, 2017, 8:00:02 PM1/5/17
to
Sslh не подойдёт?

Victor Wagner

unread,
Jan 6, 2017, 2:10:02 AM1/6/17
to
Для того, чтобы проксировать websockets через apache, нужен специальный
модуль.

Есть mod_proxy_wstunnel в разрабатываемой версии apache (2.5) и есть
его бэкпорты в 2.4 и 2.2,
http://blog.cafarelli.fr/2013/04/backporting-apache-support-for-websockets-reverse-proxy-aka-getting-gateone-to-work-behind-apache/

есть mod_pywebsocket
http://code.google.com/p/pywebsocket/

Либо надо переключаться с apache на другой продукт (nginx или haproxy)
- у них вроде уже в стабильных версиях есть поддержка websocket.

Коротаев Руслан

unread,
Jan 6, 2017, 5:40:02 AM1/6/17
to
В сообщении от [Чт 2017-01-05 23:12 +0300]
Anatoly Molchanov <ykd...@gmail.com> пишет:
Недавно была похожая задача, устанавливал Rocket.Chat, он работает через
websocket на 3000 порту и нужно было завернуть его в https. Я для этого
использовал веб-сервер caddy, но на сайте есть настройки [1] для apache
и nginx. Можно взять их за основу и приспособить под вашу ситуацию.

[1]: https://rocket.chat/docs/installation/manual-installation/configuring-ssl-reverse-proxy

--
Коротаев Руслан
https://blog.kr.pp.ru

Anatoly Molchanov

unread,
Jan 6, 2017, 9:10:02 PM1/6/17
to
Мужчины, спасибо за помощь.

Http-запросы проксирую на https://domain.com, веб-сокет на wss://domain.com через nginx:

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;



6 января 2017 г., 13:02 пользователь Коротаев Руслан <subs...@mail.kr.pp.ru> написал:
0 new messages