Как мне заставить NGINX проходить через заголовок server вышестоящих серверов?
Например, если NGINX проксирует сервер Apache с заголовком сервера Apache2.2 (CentOS), он удаляет его и заменяет на NGINX / 1.0.1. У нас есть идентификаторы нашей машины в заголовках Server:, поэтому нам нужно, чтобы NGINX не перезаписывал их.
Директива proxy_pass_header
делает именно то, что вы хотите:
proxy_pass_header Server;
В Nginx нет возможности отключить заголовок сервера, ближайший вариант - это директива токена сервера но это отключает только номер версии.
Я никогда не пробовал этого, но директива proxy_pass_header мощь позволяют указать заголовок сервера как нечто, что должно быть передано клиенту.
Я лично рекомендую отправлять идентификатор машины в специально разработанном для него заголовке (X-WHATEVER), поскольку использование определенного RFC-заголовка для поведения, отличного от того, для чего он предназначен, в конечном итоге обязательно вас укусит.
Если proxy_pass_header не работает, то я уверен, что единственной альтернативой является исправление исходного кода Nginx, чтобы не перезаписывать его.
Любые заголовки из исходного ответа могут быть сохранены с использованием переменных $ upstream_http_ * для вашего случая:
add_header Сервер $ upstream_http_server;