RE:NODE
Обзор хостинга

Сеть5 мин чтения

Что на самом деле делает для вас reverse proxy

Почему ваше приложение слушает случайный порт, а мир всё равно достаёт его на 443 — в порядке прихода пакетов.


Ваше приложение слушает выделенный ему порт. Посетители набирают имя и ожидают порт 443. То, что между ними, — reverse proxy, и понимание его объясняет почти всё, что во вкладке Domain выглядит магией.

По порядку

  1. Посетитель резолвит ваш домен и подключается на 443.
  2. Proxy терминирует TLS — сертификат держит он, а не ваше приложение.
  3. Он читает запрошенный hostname и решает, какой сервер имеется в виду.
  4. Он передаёт запрос внутрь, на ваш порт, добавляя header-ы о том, кто спрашивал изначально.
  5. Ваше приложение отвечает, и proxy отдаёт ответ обратно по шифрованному соединению.

Что это даёт

  • Ваше приложение вообще не занимается сертификатами — одной вещью для продления и ошибки меньше.
  • Несколько доменов достают несколько серверов через один адрес и один порт.
  • Ваш origin-порт не нужно выставлять в интернет вообще.

Header, на котором спотыкаются

Поскольку соединение с вашим приложением устанавливает proxy, приложение видит клиентом адрес proxy. Настоящий лежит в X-Forwarded-For. Если вы ограничиваете частоту, логируете или определяете страну по IP — читайте этот header, иначе все посетители выглядят одним человеком, и этот баг проявляется только в production.