Что в среднем по больнице лучше для сайта — HAproxy или Nginx?
На хосте lxc контейнер. На нем веб сайт на связке nginx + php-fpm + msql. Сеть контейнера на lxcbr0 за nat хоста (на хосте nftables с пробросом { 80, 443 } на контейнер.
Подумываю проксировать на хосте входящие веб-порты через haproxy или nginx (вместо проброса через nftables).
Что будет лучше из этих двоих? Больше вопрос не про производительность, а про "прозрачность" для конечного веб сервера. Чтобы, например, на него приходил айпиадрес посетителя, а не адрес проски-сервера. Обратные ответы в браузер, если например ssl сделать на прокси и направлять сугубо на 80 порт контейнера.
И вообще, какие могут быть плюсы и минусы (не рассматривая вопрос производительности)?
P.S. Для чего это делаю? Чтобы в будущем можно было сделать отказоустойчивую схему с использованием нескольких бэкенд-веб-серверов.
В общем случае nginx - более навороченный "комбайн", умеющий и быть web-сервером и балансировщиком и ещё кучу всего. haproxy - в первую голову балансировщик.
Так что в описанном применении смысла расплываться на два продукта и два синтаксиса - в общем-то нет.
Разница может появиться разве что в больших тяжелонагруженных решениях.
Возможно, я стереотипно рассуждаю, но раз haproxy заточен под узкий круг задач, то он должет быть лучше комбайна. (повторюсь могу заблуждаться). Но при этом доводилось года три назад иметь дело с ним.
И насколько помню у меня там была проблема обратной отдачи адреса браузеру клиента.
Запрос клиента ---> HAproxy с ssl сайта на 443 порт ---> Порт 80 бэкенд-сервера сайта ---> обратная отдача браузеру клиента адреса в формате http://адрес_сайта. После чего клиент обращается вновь к серверу на 80 порт haproxy и там происходит редирект на 443. То есть по сути не нужный редирект, как если бы веб сервер или haproxy вернул бы клиенту адрес с https:// .
Tech, лучше - не значит что будет что-то делать магически. А так - незаметно/невидимо пронести до бэкэнда запрос и вернуть его так же прозрачно назад - типовая задача.
Вопрос скорее к бэку и его лишней инициативе (получив в 80 порт, срыгнуть редирект на 443), которая либо убивается на корню на бэке, либо просто балансировщик стучится туда куда желает бэк, а несоответствие сертификата имени - либо игнорится (ssl verify none), либо хачится в локальном dns
нет, там вполне может появиться еще пара сайтов, включая dev, например.
P.S. Понятно, что все можно сделать в одном контейнере или даже классически на хосте. Но хочется вот так вот гранулировать (но и без фанатизма типа кубернетить).