У меня проблемы с попыткой заставить Nginx игнорировать и скрывать некоторые заголовки с прокси-сервера.
Я хочу, чтобы Nginx скрывал и игнорировал заголовки «Cache-Control» и «Server», но это не сработало, я не знаю почему.
Мой conf выглядит следующим образом:
location / {
proxy_pass http://111.131.50.42;
proxy_hide_header Cache-Control;
expires 60M;
add_header Cache-Control "public";
proxy_ignore_headers Cache-Control;
proxy_hide_header Cache-Control;
access_log off;
}
Но даже при этом я все еще получаю исходные заголовки «Cache-Control» и «Server».
Вы знаете, что я делаю не так?
P.S. Я не могу использовать модуль ngx_headers_more. Я не могу добавить этот модуль в нашу установку Nginx.
Директива proxy_ignore_headers
указывает nginx игнорировать содержимое специальных заголовков, ведущих к определенному внутреннему поведению:
«X-Accel-Expires», «Expires», «Cache-Control», «Set-Cookie» и «Vary» задают параметры кеширования ответов;
«X-Accel-Redirect» выполняет внутреннее перенаправление на указанный URI;
«X-Accel-Limit-Rate» устанавливает лимит скорости передачи ответа клиенту;
«X-Accel-Buffering» включает или отключает буферизацию ответа;
«X-Accel-Charset» устанавливает желаемую кодировку ответа.
Если вы хотите скрыть заголовки от вышестоящих серверов, вам необходимо использовать proxy_hide_header
. В Server
заголовок не передается в ответ, отправленный клиенту по умолчанию, поскольку Date
, X-Pad
, и X-Accel-...
заголовки.
Итак, это должно работать:
location / {
access_log off;
add_header Cache-Control "public";
proxy_pass http://111.131.50.42;
proxy_hide_header Cache-Control;
expires 60M;
}
Убедитесь, что вы не тестируете браузер с уже кэшированными данными, используйте curl
.