Puncte:0

API-ul MS Graph NGINX Reverse Proxy și Cache

drapel cn

Construiesc un director de companie bazat pe web, care are aproximativ 450 de angajați. Sursa de date utilizată este Microsoft Graph API (Azure AD). Acest API vă solicită să faceți o solicitare pentru fiecare angajat să-și primească fotografiile, deoarece acestea sunt trimise ca imagini JPEG (date binare).

Aplicația mea este o aplicație ReactJS găzduită de ExpressJS și care este inversată prin proxy cu NGINX. Sper că pot accelera preluarea imaginii prin memorarea în cache a imaginilor angajaților cu NGINX.

Apelul API pentru fiecare angajat este: https://graph.microsoft.com/v1.0/users/${ID}/photo/$value

Iată ce am până acum, dar sunt destul de nou în NGINX, așa că am nevoie de niște îndrumări:

Nginx.conf-ul meu:

proxy_cache_path /etc/nginx/msgraph levels=1:2 keys_zone=MSGRAPH:10m inactiv=48h max_size=1g;

My /sites-enabled/default:

# Punctul final pentru imaginea JPEG necesită „$value”, acest lucru împiedică NGINX să aștepte o variabilă.
geo $valoare {
    implicit „$valoare”;
}

Server {
    asculta 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 HIGH:!aNULL:!MD5;

    nume_server <omite nume_server>;


    locatie / echipa {
        # Serverul proxy expres pentru a utiliza adresa URL <server_name>/echipă.
        proxy_pass http://localhost:5003;
    }

    locație ~* /echipă/foto/(.*) {
        # Utilizați <nume_server>/team/photo/<id> ca punct final pentru preluarea imaginilor API Graph.
        proxy_cache MSGRAPH;
        proxy_cache_valid 200 1d;
        proxy_cache_lock activat;
        proxy_buffering activat;

        # Utilizați returnarea de mai jos pentru a confirma că adresa URL este generată corect:
        # returnează 200 https://graph.microsoft.com/v1.0/users/$1/photo/$value;

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

În ciuda celor de mai sus, de fiecare dată când încerc să preiau folosind punctul final: https://<numele serverului meu>.com/team/photo/ff036b33-e41f-4a9d-9530-d6fd8ed97b1d, primesc o eroare 502 Gateway.

Jurnalele mele de eroare NGINX produc: [eroare] 1303417#1303417: *34 nu s-a definit niciun rezolutor pentru a rezolva graph.microsoft.com, client: 192.168.91.224, server: <myservername>, cerere: „GET /team/photo/27fbd9bf-a05e-4a26-b01d97-4a26-b01d97 HTTP/1.1”, gazdă: „<numele serverului meu>”, referitor: „https://<numele serverului meu>/echipă/”, cu toate acestea, nu sunt sigur ce trebuie să fac pentru a rezolva acest lucru.

Mulțumesc anticipat!

Puncte:0
drapel cn

Pentru oricine se confruntă cu o problemă similară, trebuia să adaug un solutor pentru a remedia erorile pe care le vedeam în jurnal. După aceea, nu a existat nicio eroare, dar nici nu aveam nimic în cache. Trebuia să adaug câteva directive la blocul meu de locație, care acum arată astfel:

locație ~* /echipă/foto/(.*) {
    proxy_cache MSGRAPH;
    proxy_cache_valid 200 1d;
    proxy_cache_lock activat;
    proxy_buffering activat;

    rezolutor 8.8.8.8; # utilizați google dns pentru a gestiona problema rezolvării...

    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Gazdă $gazdă;

    proxy_ignore-headers Cache-Control; # suprascrieți anteturile de control cache API
    add_header X-Cache $upstream_cache_status; # poate vedea dacă cache HIT sau MISS

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

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.