Nginx + SSL + Rails + Джаггернаут (Node.js) + Engineyard - PullRequest
0 голосов
/ 15 марта 2012

У меня есть два разных приложения на одном сервере. Один из них работает на порту 80 (mydomain.com), другой - на порту 443 (sub.mydomain.com) и имеет подстановочный сертификат.

Первое приложение предназначено только для информационных целей и не нуждается в поддержке веб-сокетов. Второе приложение должно иметь поддержку защищенных веб-сокетов (протокол wss).

Я попытался настроить гем juggernaut (для веб-сокетов) для моего приложения rails с сервером nginx в облаке верфи, но у меня есть одна проблема. Облако Engineyard предоставляет только два открытых порта: 80 и 443. Я знаю, что nginx не полностью поддерживает обратное проксирование http 1.1, поэтому я не могу использовать проксирование из nginx для перенаправления запросов веб-сокетов на конкретный локальный порт (в моем случае это порт 8080).

Я пытался использовать HAProxy, и это работает для меня, когда я использую только незащищенные веб-сокеты, но мне нужно поддерживать безопасные веб-сокеты. Как я знаю, в этом случае я должен использовать что-то вроде STunnel для туннелирования моего запроса https, а затем использовать HAProxy, но когда я его протестировал - я увидел, что сервер должен работать в несколько раз медленнее, и я все еще не работал, чтобы использовать безопасный сокет соединение: (

Может я что-то не так делаю? Может быть, кто-то расскажет, как настроить nginx для нескольких приложений (одно из них должно работать через https) и защитить веб-сокеты, используя только два порта (80 и 443).

p.s. Также я использовал node-http-proxy, в этом случае я смог настроить прокси для разных приложений nginx, но я не получаю запуск веб-сокетов (произошло только для «рукопожатия» через nginx, а не для «переключения протоколов»)

1 Ответ

0 голосов
/ 22 марта 2012

Не так давно я провел некоторые исследования различных обратных прокси и веб-сокетов. Суть в том, что websockets является новым, и поддержка обратного прокси-сервера для него сейчас очень плохая.

Рекомендация, с которой я столкнулся и с которой я согласен, заключается в том, что вы должны использовать свои веб-сокеты в другом стеке, чем остальные элементы. Обычно это означает размещение его на отдельном домене или поддомене.

Вам все еще приходится сталкиваться со сложностями работы обратных прокси, но это будет менее сложно, если вам не придется беспокоиться о взломе других вещей.

Кроме того, я согласен, что, возможно, вы получите лучшие ответы на сервере или суперпользователя.

...