Я использую nginx для прокси-сервера и сохраняю постоянные подключения к удаленным серверам для меня.
Я сконфигурировал около 15 блоков, подобных этому примеру:
upstream rinu-test {
server test.rinu.test:443;
keepalive 20;
}
server {
listen 80;
server_name test.rinu.test;
location / {
proxy_pass https://rinu-test;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $http_host;
}
}
Проблема в том, что если имя хоста не может быть разрешено в одном или нескольких из upstream
блоков, nginx не запустится (повторно). Я также не могу использовать статические IP-адреса, некоторые из этих ящиков явно не говорили об этом, потому что IP-адреса будут меняться. Каждое другое решение, которое я видел в этом сообщении об ошибке, говорит, чтобы избавиться от upstream
и сделать все в блоке location
. Это невозможно здесь, потому что keepalive
доступен только под upstream
.
Я могу временно позволить себе потерять один сервер, но не все 15.
Edit: Оказывается, nginx не подходит для этого варианта использования. Следует использовать альтернативный бэкэнд (upstream) keepalive proxy. В моем ответе есть альтернатива Node.js. До сих пор я не нашел других альтернатив, которые действительно работают.