Score:0

NGINX Reverse Proxy และแคช MS Graph API

ธง cn

ฉันกำลังสร้างไดเร็กทอรีบริษัทบนเว็บซึ่งมีพนักงานประมาณ 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/"อย่างไรก็ตาม ฉันไม่แน่ใจว่าต้องทำอย่างไรเพื่อแก้ไขปัญหานี้

ขอบคุณล่วงหน้า!

Score:0
ธง cn

สำหรับใครก็ตามที่พบปัญหาที่คล้ายกัน ฉันต้องเพิ่มตัวแก้ไขเพื่อแก้ไขข้อผิดพลาดที่ฉันเห็นในบันทึก หลังจากนั้นไม่มีข้อผิดพลาด แต่ฉันไม่ได้แคชอะไรเลย ฉันต้องเพิ่มคำสั่งสองสามคำสั่งในบล็อกตำแหน่งของฉัน ซึ่งตอนนี้มีลักษณะดังนี้:

สถานที่ ~* /team/photo/(.*) {
    proxy_cache MSGRAPH;
    proxy_cache_valid 200 1d;
    เปิด proxy_cache_lock;
    เปิด proxy_buffering;

    ตัวแก้ไข 8.8.8.8; # ใช้ google DNS เพื่อจัดการกับปัญหาตัวแก้ไข...

    proxy_set_header X-ส่งต่อโปรโต https;
    proxy_set_header โฮสต์ $host;

    proxy_ignore-headers การควบคุมแคช; # เขียนทับส่วนหัวควบคุมแคช API
    add_header X-Cache $upstream_cache_status; # สามารถดูได้ว่าแคช HIT หรือ MISS

    proxy_pass https://graph.microsoft.com/v1.0/users/$1/photo/$value;
}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา