NginX - переписать http_referer
Я использую Nginx в качестве прокси для моего внутреннего сервера. И мое приложение будет хранить все ссылки на базу данных. Чтобы уменьшить пространство базы данных, я хочу игнорировать некоторые из рефереров по некоторым условиям.
Я хочу удалить часть http_referer, если в URI есть какая-то строка.
Поскольку nginx не может использовать [proxy_set_header Referer ""] внутри "if {...}",
Итак, я пытаюсь использовать "карту", но она все еще не работает. Вот моя конфигурация
http {
....
map $http_referer $ref {
default $http_referer;
}
....
}
server {
......
if ($request_uri ~ .*XXXXXXX.*) {
set $ref "";
}
proxy_set_header Referer $ref;
......
}
- Я могу создать переменную $ref
- Он может сопоставить $ref заголовку с помощью "proxy_set_header Referer $ref"
- Но "если" не может изменить значение $ref
Разве мы не можем изменить глобальную переменную внутри "если"?
1 ответ
Вы можете попробовать этот код
map $http_referer $ref {
default $http_referer;
~*(badref.com) 1;
}
и к разделу сервера
if ($ref = '1') {
set $ref "";
}
proxy_set_header Referer $ref;
Для проверки $request_uri и $http_referer в одном условии вы можете использовать
map $http_referer$request_uri $ref {
default $http_referer;
~*.*badref.com.*XXXXXXX.* "";
}
proxy_set_header Referer $ref;