Puncte:0

HTTP_IF_NONE_MATCH Lipsește pe partea serverului cu solicitări Chrome către NGINX

drapel ke

Încerc să adaug etag verificarea cache-ului bazată pe o aplicație web pe care am dezvoltat-o ​​și care rulează pe Apache prin intermediul unui proxy invers NGINX. Aplicația web este scrisă în Perl. În scriptul Perl, verific pentru $ENV{'HTTP_IF_NONE_MATCH'} antet și apoi testați etag în ea, dacă există. Dacă accesez aplicația prin cURL, funcționează:

timothybutler@timothys-MacBook-Pro ~ % curl -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 200 OK
Server: nginx/1.21.4
Data: vineri, 12 noiembrie 2021 18:06:37 GMT
Tip de conținut: audio/mpeg
Lungimea conținutului: 16665729
Conexiune: păstrați-vă în viață
Surogat-Control: fără cache
Cache-Control: private,max-age=864000
Etichetă: „1635825322”

Dând asta etag înapoi prin cURL, obțin rezultatul așteptat:

timothybutler@timothys-MacBook-Pro ~ % curl -H „Dacă nu se potrivește: „1635825322”” -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 304 Nemodificat
Server: nginx/1.21.4
Data: vineri, 12 noiembrie 2021 18:19:29 GMT
Conexiune: păstrați-vă în viață
Cache-Control: privat, vârsta maximă=864000
Etichetă: „1635825322”

Cu toate acestea, procesul se întrerupe dacă îl încerc în Chrome. Chrome trimite rapoarte Dacă nu se potrivește: „1635825322” ca unul dintre antete când reîmprospătează pagina, dar serverul meu nu setează HTTP_IF_NONE_MATCH variabilă de mediu pentru acea cerere contrar celei care a venit prin cURL. Dacă arunc tot hash-ul %ENV, Dacă-Se potrivește-Niciuna antetul și acesta etag pur și simplu nu este prezent sub nicio formă atunci când Chrome emite cererea.

Gerard H. Pille avatar
drapel in
Utilizați tcpdump pentru a afla cine îl aruncă, Nginx sau Apache. I-ai spus lui Nginx să treacă? Ah, și de ce puneți un proxy invers în fața unui proxy invers?
drapel ke
@GerardH.Pille Nu prea am nicio experiență cu tcpdump - există o recomandare bună pe care mi-ai putea-o oferi cu privire la: steaguri pentru vizionarea asta? În ceea ce privește NGINX, acesta servește conținutul static pentru site, în timp ce folosesc Apache pentru a genera procese FastCGI pentru Perl. Am întâmpinat câteva probleme încercând să fac ca FastCGI să apară corect direct sub NGINX.
Gerard H. Pille avatar
drapel in
În acest caz, ar fi trebuit să-l lăsați pe Apache să se ocupe și de conținutul static - dar sunt destul de sigur că Nginx ar fi putut gestiona tot ce aveți nevoie. Aruncă o privire la exemplele din pagina de manual a tcpdump. IIRC, aș rula un „tcpdump -A -s0” pe portul pe care ascultă Apache, pentru a vedea dacă „if-none-match” este încă acolo. Dar: "I-ai spus lui Nginx să treacă?"

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.