У меня есть следующая настройка, потому что я помещаю nginx перед двумя службами приложений Azure в разных регионах — без этого (например, имея службы приложений непосредственно в моем восходящем блоке) кажется, что nginx подключался к Azure по IP-адресу, а не по имя хоста, чтобы балансировщик нагрузки Azure не знал, куда направить запрос, или не установил правильное значение для заголовка узла.
Но теперь у меня есть проблема, что мой восходящий блок не выйдет из строя, если сервер в соответствующем блоке сервера не работает, потому что он подключается к блокам локального хост-сервера.
Я пытался использовать параметры proxy_next_upstream, но они, похоже, не делают то, что мне нужно.
Могу ли я добиться того, чего хочу, возможно, мои настройки восходящего потока, указывающие на локальные приложения, являются настоящей проблемой, но я не смог найти способ заставить nginx играть в мяч со службой приложений в противном случае.
восходящие локальные приложения {
локальный хост сервера: 8001;
локальный хост сервера: 8002;
}
сервер {
место расположения / {
прокси_пасс http://localapps;
время ожидания ошибки proxy_next_upstream http_403;
proxy_next_upstream_timeout 5 м;
proxy_next_upstream_tries 20;
proxy_connect_timeout 2;
}
слушать 443 ssl; # под управлением Certbot
ssl_certificate <путь>/fullchain.pem; # под управлением Certbot
ssl_certificate_key <путь>/privkey.pem; # под управлением Certbot
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}
сервер {
слушать 8001;
имя_сервера web01;
место расположения / {
proxy_set_header Host app1.azurewebsites.net;
proxy_pass https://app1.azurewebsites.net;
proxy_cookie_domain app1.azurewebsites.net mycustomdomain.com;
proxy_ssl_certificate <путь>/fullchain.pem;
proxy_ssl_certificate_key <путь>/privkey.pem;
proxy_ssl_session_reuse включено;
}
}
сервер {
слушать 8002;
имя_сервера web02;
место расположения / {
proxy_set_header Host app2.azurewebsites.net;
proxy_pass https://app2.azurewebsites.net;
proxy_cookie_domain app1.azurewebsites.net mycustomdomain.com;
proxy_ssl_certificate <путь>/fullchain.pem;
proxy_ssl_certificate_key <путь>/privkey.pem;
proxy_ssl_session_reuse включено;
}
}
сервер {
если ($host = myvm.westeurope.cloudapp.azure.com) {
вернуть 301 https://$host$request_uri;
} # управляется Certbot
имя_сервера myvm.westeurope.cloudapp.azure.com;
слушать 80;
вернуть 404; # под управлением Certbot
}