У меня есть приложение API First, в котором есть отдельные серверы для внешнего и внутреннего интерфейса.
Интерфейс - это просто сервер NGINX, который обслуживает статический сайт Angular. Бэкэнд - это сервер Play Scala.
Недавно, чтобы больше не использовать CORS, я отправлял все, что /api
жду api.myapp.com
используя такой блок:
location /api/ {
proxy_pass https://api.myapp.com/;
}
Кажется, все работает нормально, за исключением того, что время от времени внешний сервер перестает передавать запросы и просто продолжает возвращать 502, хотя некоторые запросы проходят.
Если я перезапущу сервер NGINX, все в порядке.
Если я посмотрю журналы NGINX, я вижу кучу ошибок 499 для запросов / api.
[15/Jan/2017:22:31:18 +0000] "GET /api/1/users/tzXWM4hNAHUvT9SfA-pAGA/organizations?v=3 HTTP/1.1" 499 0 "https://app.myapp.com/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "10.225.158.152"
Если я посмотрю на бэкэнд-логи, то запросы, возвращающие 502, на самом деле никогда не попадают в бэкэнд.
Будет ли NGINX каким-то образом задушить некоторые URL-адреса или думать, что внутренний сервер по какой-то причине пропал?
Я знаю, что в Apache, чтобы сделать что-то подобное, мне пришлось установить retry = 0 для директивы ProxyPass.