У меня есть nginx, который отправляет запросы на сервер приложений browser <=> nginx <=> app_server
.
По какой-то причине не все заголовки предоставлены app_server
будет возвращен в браузер.
Т.е. заголовки вроде Access-Control-Allow-***
будет удален из ответа.
Как это исправить?
Моя текущая конфигурация местоположения:
location / {
proxy_pass http://app_server:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Origin '';
proxy_cache_bypass $http_upgrade;
proxy_buffering off;
}
Хорошо, я нашел причину такого поведения. Добавляя
proxy_set_header Origin '';
Я практически удалил этот заголовок из проксированного запроса на app_server. Следовательно, app_server не возвращал заголовки CORS. Как только я изменил его на
proxy_set_header Origin '$http_origin';
все работало исправно.