ฉันต้องการความช่วยเหลือเล็กน้อยเกี่ยวกับการตั้งค่า nginx conf การกำหนดค่าของฉันเป็นพื้นนี้ ...
แผนที่ $http_apikey $api_client_name {
ค่าเริ่มต้น "";
"CLIENT_ID" "client_one";
}
เซิร์ฟเวอร์ {
access_log /dev/stdout หลัก;
ฟัง 443 ssl;
server_name localhost;
#การกำหนดค่า TLS
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_cache ที่ใช้ร่วมกัน: SSL:10m;
ssl_session_timeout 5 นาที;
ssl_ciphers สูง:!aNULL:!MD5;
ssl_protocols TLSv1.2 TLSv1.3;
เปิด proxy_intercept_errors; # อย่าส่งข้อผิดพลาดส่วนหลังไปยังไคลเอนต์
แอปพลิเคชัน default_type/json; # หากไม่มีประเภทเนื้อหาให้ถือว่า JSON
ตำแหน่ง ~ ^/index-$http_apikey {
ถ้า ($http_apikey = "") {
กลับ 401; #ไม่ได้รับอนุญาต
}
ถ้า ($api_client_name = "") {
กลับ 403; # ต้องห้าม
}
proxy_pass http://elasticsearch:9200;
}
....
แนวคิดคือการได้รับ http_apike
จากข้อมูลส่วนหัวบน POST และใช้เป็นส่วนหนึ่งของลิงก์ อย่างไรก็ตาม VAR http_apike
, มีตัวอักษรตัวพิมพ์ใหญ่ในนั้นเช่นเดียวกับตัวพิมพ์เล็กและตัวเลข 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 ที่เทียบเท่าหรือไม่?
ขอบคุณ