Мне нужно преобразовать EPP (протокол на основе сеанса - https://tools.ietf.org/html/rfc5734) в протокол на основе HTTP-запросов / ответов (JSON). Часть JSON уже написана и работает с несколькими клиентами.
Я смотрел на nginx с использованием веб-сокетов, но веб-сокеты кажутся слишком высокими для необработанного протокола EPP.
Мне нужно решить следующий процесс:
Есть ли какие-либо рекомендуемые технологии в nginx для достижения этой цели? Я могу запрограммировать сервер сокетов PHP без особых хлопот.






Итак, вы строите сервер EPP? Добро пожаловать в мир EPP, от кого-то, кто был в нем с момента его рождения или даже раньше :-)
EPP - это «простой» протокол, использующий XML поверх TLS (обычно есть несколько экземпляров по HTTPS, а в период разработки это были другие предложения, такие как SMTP или BXXP).
Итак, как серверу вам нужно что-то, способное обрабатывать завершение TLS и читать XML. Это возможно на любом языке, и это не ракетостроение. Конечно, дьявол кроется в деталях. И вы не предоставляете достаточно деталей / контекста, чтобы точно увидеть, какие ограничения у вас могут быть или конкретная проблема. Так что вы можете быть здесь немного не по теме, потому что написание простого сервера, обрабатывающего TLS, и чтение XML должно быть показано здесь в виде кода, если вы хотите, чтобы люди вам помогали.
Обязательно прочтите RFC 5734 несколько раз о конкретных аспектах транспорта. Вы, конечно, должны помнить, что это протокол с отслеживанием состояния, поэтому, если вы «пересылаете» запросы внутренне по протоколу без сохранения состояния, вам потребуется выполнить какую-то аутентификацию.
Вам не нужны веб-сокеты, на самом деле я не понимаю, почему вы о них говорите. Вам просто нужно завершение TLS, а не HTTPS.
Взгляните также на HAProxy, это популярный обработчик подобных вещей.
Но опять же, исходя из ваших конкретных (неизвестных) ограничений (особенно количества клиентов, объема запросов, необходимых соглашений об уровне обслуживания и т. д.), Может быть достаточно чего-то столь же простого, как stunnel.
Обратите внимание, что у вас есть mod_epp для Apache. Может быть, уже не очень живой, но может подсказать. Это позволяет использовать любую программу CGI под Apache, когда сервер получает фактически фреймы EPP, а не HTTP.
В качестве побочного примечания, помимо безопасности (но это должно быть охвачено RFC5734), я бы рекомендовал вам быть осторожным с кодировками, пространствами имен XML и избегать использования нескольких механизмов сериализации в одном потоке (JSON внутри XML - плохая идея, как и XML внутри JSON, но я точно не знаю, как работает ваша "конвертируемая" часть).
Я нашел модуль mod_epp для Apache, который, похоже, решит мои проблемы. Мне нужно было соответствовать существующей архитектуре. Спасибо, Патрик!