Tôi cần một chút trợ giúp với thiết lập nginx conf. Cấu hình của tôi về cơ bản là thế này ...
bản đồ $http_apikey $api_client_name {
mặc định "";
"CLIENT_ID" "client_one";
}
người phục vụ {
truy cập_log /dev/stdout chính;
nghe 443 ssl;
máy chủ_tên máy chủ cục bộ;
# Cấu hình TLS
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_cache được chia sẻ:SSL:10m;
ssl_session_timeout 5 phút;
ssl_ciphers CAO:!aNULL:!MD5;
ssl_protocols TLSv1.2 TLSv1.3;
bật proxy_intercept_errors; # Không gửi lỗi phụ trợ cho khách hàng
ứng dụng default_type/json; # Nếu không có kiểu nội dung thì giả sử JSON
vị trí ~ ^/index-$http_apikey {
nếu ($http_apikey = "") {
trả lại 401; # Không được phép
}
nếu ($api_client_name = "") {
trả lại 403; # Cấm
}
proxy_pass http://elasticsearch:9200;
}
....
Ý tưởng là để có được http_apikey
từ thông tin tiêu đề trên POST và sử dụng nó như một phần của liên kết. Tuy nhiên, VAR, http_apikey
, có chữ in hoa cũng như chữ thường và số. Mặc dù vậy, URI dự kiến sẽ ở dạng chữ thường, vì vậy về cơ bản:
vị trí ~ ^/index-$http_apikey.lower() {
nếu ($http_apikey = "") {
trả lại 401; # Không được phép
}
nếu ($api_client_name = "") {
trả lại 403; # Cấm
}
proxy_pass http://elasticsearch:9200;
}
vị trí ~ ^/index-$http_apikey.lower()
Có cách nào để làm điều này trong nginx không? Giống như trong bash tôi sẽ chỉ ${http_apikey,,}
... có tương đương với nginx không?
Cảm ơn