Создайте терминатор сокета SSL-сервера
Мне нужно преобразовать EPP (протокол сеанса - https://tools.ietf.org/html/rfc5734) в протокол HTTP / запрос на основе ответа (JSON). Часть JSON уже написана и работает с несколькими клиентами.
Я смотрел на nginx с помощью веб-сокетов, но веб-сокеты кажутся слишком высокими для необработанного протокола EPP.
Мне нужно решить следующий процесс:
- nginx завершает соединение SSL TCP
- зачитать запрос EPP (XML) - желательно на PHP
- преобразовать в JSON и отправить его на HTTP-сервер
- прочитайте результат
- преобразовать в XML и отправить его обратно в соединение EPP
Есть ли рекомендуемые технологии в nginx для достижения этой цели? Я могу кодировать сервер сокетов PHP без особых хлопот.
1 ответ
Итак, вы строите сервер EPP? Добро пожаловать в мир EPP, от кого-то, кто находится в нем с самого его рождения или даже раньше:-)
EPP - это "простой" протокол, использующий XML по TLS (как правило, существуют некоторые экземпляры по HTTPS, и в течение периода разработки они представляли другие предложения, например, по SMTP или BXXP).
Таким образом, как сервер вам нужно что-то, способное обрабатывать завершение TLS и читать XML. Это возможно на любом языке, и это не ракетостроение. Конечно, дьявол кроется в деталях. И вы не предоставляете достаточно деталей / контекста, чтобы точно определить, какие у вас могут быть ограничения или конкретные проблемы. Так что вы можете быть немного не в теме здесь, потому что написание простого сервера, обрабатывающего TLS и чтение XML, должно быть показано здесь как код, если вы хотите, чтобы люди вам помогали.
Пожалуйста, не забудьте прочитать RFC 5734 несколько раз о конкретных транспортных соображениях. Вам, конечно, нужно помнить, что это протокол с отслеживанием состояния, поэтому, если вы "перенаправляете" запросы внутренне по протоколу без сохранения состояния, вам потребуется выполнить некоторую аутентификацию.
Вам не нужны веб-розетки, на самом деле я не понимаю, почему вы говорите о них. Вам просто нужно завершение TLS, а не HTTPS.
Взгляните также на HAProxy, это популярный обработчик подобных вещей.
Но опять же, исходя из ваших конкретных (неизвестных) ограничений (особенно количества клиентов, объема запросов, необходимых SLA и т. Д.), Что-то такое простое, как stunnel
Может быть достаточно.
Обратите внимание, что у вас есть mod_epp для Apache. Может быть, не очень жить, но может дать вам идеи. Это позволяет использовать любую CGI-программу под Apache, когда сервер получает фактически кадры EPP, а не HTTP.
В качестве дополнительного примечания, помимо безопасности (но это должно охватываться RFC5734), я бы рекомендовал вам быть осторожным с кодировками, пространствами имен XML и избегать использования нескольких механизмов сериализации в одном потоке (JSON внутри XML - плохая идея, как и XML внутри JSON, но я не знаю точно, как работает ваша часть "convert").