ฉันกำลังสร้างไดเร็กทอรีบริษัทบนเว็บซึ่งมีพนักงานประมาณ 450 คน แหล่งข้อมูลที่ใช้คือ Microsoft Graph API (Azure AD) API นี้กำหนดให้คุณต้องส่งคำขอให้พนักงานทุกคนได้รับรูปภาพ เนื่องจากรูปภาพจะถูกส่งเป็นรูปภาพ JPEG (ข้อมูลไบนารี)
แอปพลิเคชันของฉันคือแอป ReactJS ที่โฮสต์โดย ExpressJS และถูกย้อนกลับพร็อกซีด้วย NGINX ฉันหวังว่าฉันจะสามารถเพิ่มความเร็วในการดึงรูปภาพได้โดยการแคชรูปภาพของพนักงานด้วย NGINX
การเรียก API สำหรับพนักงานแต่ละคนคือ: https://graph.microsoft.com/v1.0/users/${ID}/photo/$value
นี่คือสิ่งที่ฉันมีจนถึงตอนนี้ แต่ฉันค่อนข้างใหม่กับ NGINX ดังนั้นฉันจึงต้องการคำแนะนำ:
nginx.conf ของฉัน:
proxy_cache_path /etc/nginx/msgraph levels=1:2 keys_zone=MSGRAPH:10m inactive=48h max_size=1g;
ของฉัน /sites-enabled/default:
# จุดสิ้นสุดสำหรับภาพ JPEG ต้องใช้ "$value" ซึ่งจะป้องกันไม่ให้ NGINX คาดหวังตัวแปร
ค่าทางภูมิศาสตร์ $ {
เริ่มต้น "ค่า $";
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl default_server;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers สูง:!aNULL:!MD5;
ชื่อเซิร์ฟเวอร์ <omit_server_name>;
ตำแหน่ง / ทีม {
# พร็อกซีเซิร์ฟเวอร์ด่วนเพื่อใช้ <server_name>/team URL
proxy_pass http://localhost:5003;
}
สถานที่ ~* /team/photo/(.*) {
# ใช้ <server_name>/team/photo/<id> เป็นจุดสิ้นสุดสำหรับการดึงภาพ Graph API
proxy_cache MSGRAPH;
proxy_cache_valid 200 1d;
เปิด proxy_cache_lock;
เปิด proxy_buffering;
# ใช้ด้านล่างเพื่อยืนยันว่า URL ถูกสร้างขึ้นอย่างถูกต้อง:
# คืน 200 https://graph.microsoft.com/v1.0/users/$1/photo/$value;
proxy_pass https://graph.microsoft.com/v1.0/users/$1/photo/$value;
}
}
แม้จะมีข้างต้น ทุกครั้งที่ฉันพยายามดึงข้อมูลโดยใช้จุดสิ้นสุด: https://<ชื่อเซิร์ฟเวอร์ของฉัน>.com/team/photo/ff036b33-e41f-4a9d-9530-d6fd8ed97b1d
ฉันได้รับข้อผิดพลาด 502 เกตเวย์
บันทึกข้อผิดพลาด NGINX ของฉันกำลังส่งออก: [ข้อผิดพลาด] 1303417#1303417: *34 ไม่ได้กำหนดตัวแก้ไขเพื่อแก้ไข graph.microsoft.com ไคลเอ็นต์: 192.168.91.224 เซิร์ฟเวอร์: <myservername> คำขอ: "GET /team/photo/27fbd9bf-a05e-4a26-b019-544135793cdb HTTP/1.1", โฮสต์: "<myservername>", ผู้อ้างอิง: "https://<myservername>/team/"
อย่างไรก็ตาม ฉันไม่แน่ใจว่าต้องทำอย่างไรเพื่อแก้ไขปัญหานี้
ขอบคุณล่วงหน้า!