Мне нужна небольшая помощь с настройкой nginx conf. Мой конфиг в основном такой...
карта $http_apikey $api_client_name {
По умолчанию "";
"CLIENT_ID" "client_one";
}
сервер {
журнал_доступа /dev/stdout основной;
слушать 443 ssl;
имя_сервера локальный хост;
# Конфигурация TLS
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_cache общий: SSL: 10 м;
ssl_session_timeout 5 м;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols TLSv1.2 TLSv1.3;
proxy_intercept_errors включен; # Не отправлять ошибки бэкенда клиенту
приложение по умолчанию_тип/json; # Если нет типа содержимого, то предположим, что это JSON
расположение ~ ^/index-$http_apikey {
если ($ http_apikey = "") {
вернуть 401; # Неавторизованный
}
если ($api_client_name = "") {
вернуть 403; # Запрещенный
}
proxy_pass http://elasticsearch:9200;
}
....
Идея состоит в том, чтобы получить http_apikey
из информации заголовка на POST и использовать ее как часть ссылки. Однако ВАР, http_apikey
, содержит прописные буквы, а также строчные буквы и цифры. Ожидается, что URI будет в нижнем регистре, поэтому по существу:
расположение ~ ^/index-$http_apikey.lower() {
если ($ http_apikey = "") {
вернуть 401; # Неавторизованный
}
если ($api_client_name = "") {
вернуть 403; # Запрещенный
}
proxy_pass http://elasticsearch:9200;
}
расположение ~ ^/index-$http_apikey.lower()
Есть ли способ сделать это в nginx? Как в Баше, я бы просто ${http_apikey,,}
... есть ли эквивалент nginx?
Спасибо