У меня есть внутренний сервер (Apache), который находится слишком далеко от большинства наших пользователей, поэтому наша идея состоит в том, чтобы реализовать более близкий обратный прокси-сервер, который будет действовать как кеш.
На первый взгляд, это сработало как оберег. Кэшированные статические файлы обслуживаются чрезвычайно быстро, но для всего остального обратный прокси (NGINX) должен подключаться к внутреннему серверу, что занимает некоторое время для установления связи SSL, что замедляет эти первые запросы.
Я искал информацию по этому поводу, но не мог найти способ поддерживать эту связь. Есть способ сделать это?
Я даже пытался узнать больше о веб-сокетах, но все реализации, которые я смог найти, были направлены на ответ на конкретный запрос, а не на поддержание соединения между обоими веб-серверами (NGINX на обратном прокси и Apache на сервере).
Есть ли у кого-нибудь из вас идеи или подсказки о том, что изучать / использовать / искать для этого?
Огромное спасибо заранее!
В nginx можно указать только keepalive
для восходящего соединения, если соединение определено в upstream
блок. Например:
upstream backend {
server private-api.example.com:443;
keepalive 32;
}
Вот, keepalive
указывает максимальное количество одновременных открытых подключений к вышестоящему серверу (-ам) на рабочий процесс.
Чтобы использовать апстрим, вы указываете его имя в своем proxy_pass
вместо внутреннего адреса.
Например, если вы ранее использовали:
proxy_pass https://private-api.example.com:443;
Вы бы изменили его на:
proxy_pass https://backend;
Буквально замените имя восходящего потока на определенное server
.
Вы также должны установить версию HTTP 1.1 (потому что это довольно абсурдно по умолчанию 1.0) и очистить заголовок Connection:
proxy_http_version 1.1;
proxy_set_header Connection "";
Имейте в виду, что есть также keepalive_timeout
вы можете определить в upstream
который вам может понадобиться настроить. По умолчанию это 60 секунд, поэтому, если соединение простаивает в течение этого времени, оно будет закрыто, даже если их меньше keepalive
соединения открыты. У внутреннего сервера будет собственный тайм-аут поддержки активности, который вам также нужно будет настроить отдельно.