Обратное проксирование - самый эффективный способ связать nginx и nodejs?
Когда у вас есть один веб-сервер с несколькими приложениями nodejs, типичная вещь, которую вы делаете, - это ставите перед всеми ними обратный прокси-сервер и пишите правила. Nginx в настоящее время является фаворитом, потому что он быстрый, поэтому я сосредоточусь на нем, но этот вопрос также можно применить к другим веб-серверам.
Сегодня меня поразило, что это звучит несколько неэффективно. В конце концов, один и тот же HTTP-запрос нужно проанализировать дважды - сначала прокси, затем nodejs. И сам протокол также основан на тексте с множеством граничных случаев в парсере... нельзя ли сделать связь между веб-сервером и nodejs более эффективной, чтобы запрос нужно было анализировать только один раз?
Моя первая идея была о fastcgi, но оказалось, что это только ухудшает ситуацию, потому что ограничивает nodejs обработкой одного запроса за раз. И в любом случае это довольно устарело.
Затем я копал еще немного и нашел SCGI, который кажется даже лучше и даже поддерживается nginx... но, похоже, не на стороне NodeJs.
И, наконец, я нашел протокол Apache JServ, но поддержка еще хуже, поскольку ни nginx, ни nodejs не поддерживают его, насколько я могу судить.
Почему это? Я понимаю, что эти накладные расходы, вероятно, малы по сравнению со всем остальным, что происходит в типичном запросе, но действительно ли они настолько незначительны, что даже не стоит прилагать к этому никаких усилий? Даже небольшая выгода может сложиться, и легко может быть простой пакет, который заменит Node'shttp.Server
с совместимым scgi.Server
с минимальными усилиями.