У меня проблема с 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;
            }
2
sihill 17 Апр 2015 в 00:03
Та же проблема, мужик, клея еще нет? ..
 – 
cardinal-gray
28 Май 2015 в 17:12

1 ответ

Лучший ответ

Чтобы переслать возвращенный последний измененный заголовок, поместите следующую директиву в блок местоположения:

sub_filter_last_modified on

Для пересылки любого другого заголовка используйте add_header с $upstream_http_${header}. Здесь я отправлю заголовок Content-Length:

add_header 'Content-Length' $upstream_http_content_length;
0
OhBeWise 29 Май 2015 в 18:37