Только 80 порт
Большая боль для современной эксплуатации — это бекенд, который лезет на уровень протокола: терминирует SSL, отдаёт заголовки HSTS или CSP или даже делает Basic-авторизацию. С одной стороны звучит довольно просто — поставил пару пакетов для любимого фреймворка, и добавил безопасности и удобства.
К сожалению, это не правда. Возьмём, к примеру, HSTS — заголовок, с помощью которого приложение может сказать «дальше соединяйся со мной только по HTTPS, пожалуйста». Браузер кеширует этот заголовок, и больше никогда не пойдёт по HTTP-ссылке на приложение. Вроде бы отличное поведение, но ровно до того момента, пока вы не запустите приложение с таким заголовком на локалхосте, после чего у вас перестают работать все не-SSL приложения, которые висят на этом же порту.
Или CSP — список доменов, с которых браузеру разрешено грузить внешние ассеты. Вроде бы клёво, когда программисты сами прописывают, что им нужно, но представьте, как грустно становится админу, когда он разворачивает какой-нибудь новый вид тестовой среды — скажем песочницу для потенциальных партнёров. Ему нужно идти к программистам, чтобы те добавили новые хосты в свои списки, иначе песочница будет падать с кучей ошибок.
Я не говорю о попытках терминировать SSL или реализовать HTTP/2 в том же контейнере, где крутится код. В специально приспособленных местах такие вещи делаются за 1 строку кода, или вообще без неё. А в контейнер приходится заводить nginx, letsnencrypt и ещё кучу скучных вещей.
Всё, что должен знать современный бекенд про HTTP — это то, что его будут спрашивать по 80 порту (и то не обязательно). Всё остальное — забота балансировщика, nginx, cloudflare или что там у вас.
Post #98
140
Forwarded from FEDOR BORSHEV
- 👍 1