У меня проблема с Nginx, выступающим в качестве прокси-сервера: запрос -> NGINX PROXY -> сервер приложений (только один)
Прокси-сервер прослушивает порт 443, а сервер приложений - 80. Заголовки, возвращаемые вышестоящим сервером, удаляются прокси. Я был вынужден использовать:
add_header 'Content-Length' $upstream_http_content_length;
Он работает с Content-Length, но не работает с заголовком Last-Modified. Запрос Curl от прокси Nginx с использованием частного IP-адреса для восходящего потока возвращает все заголовки. Почему прокси Nginx вырезает этот заголовок, даже если его возврат указан с помощью add_header
?
У меня есть следующий образец nginx.conf:
location /some-web-app {
proxy_pass http://backend/some-web-app;
proxy_redirect off;
proxy_redirect http $scheme;
proxy_set_header Host $host;
add_header 'Last-Modified' $upstream_http_last_modified;
add_header 'Content-Length' $upstream_http_content_length;
sub_filter 'codebase="http' 'codebase="https';
sub_filter_types application/x-java-jnlp-file;
access_log /var/log/nginx/some-web-app_access.log combined_jsession_upstream;
error_log /var/log/nginx/some-web-app_err.log;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
}
1 ответ
Чтобы переслать возвращенный последний измененный заголовок, поместите следующую директиву в блок местоположения:
sub_filter_last_modified on
Для пересылки любого другого заголовка используйте add_header
с $upstream_http_${header}
. Здесь я отправлю заголовок Content-Length:
add_header 'Content-Length' $upstream_http_content_length;
Похожие вопросы
Новые вопросы
nginx
Nginx — это веб-сервер и прокси-сервер. Обратите внимание, что вопросы по использованию и настройке серверного программного обеспечения могут не относиться к теме и подлежат закрытию, если они не связаны напрямую с контекстом программирования. Другие сайты Stack Exchange, такие как Super User, Server Fault или Webmasters, могут быть более подходящими местами для таких вопросов.