Am Nginx configurat ca echilibrare a încărcăturii proxy inversă între două containere docker care rulează toate pe același server. Când încarc o pagină pentru prima dată, pagina se încarcă, dar primesc o mulțime de erori 404 pentru toate fișierele css și js:
Când se reîmprospătează sau se deschide o a doua filă, toate aceste erori dispar și pagina se încarcă bine. Când reduc acest lucru la un singur recipient, funcționează în mod similar.
Inițial am crezut că acest lucru se datorează faptului că js și css au fost solicitate de la aceeași adresă URL rădăcină și un aspect al echilibratorilor de încărcare și al containerelor producea erori, deoarece un grup de cereri pentru un singur utilizator erau echilibrate între cele două servere. Am încercat să folosesc printr-un mic experiment proxy_set_header Gazdă $gazdă
(in cautarea Aici și Aici pentru răspunsuri) - înțelegerea mea ar fi că aceasta ar trebui să trimită cererile ulterioare ale unui singur utilizator către același server din amonte. Acest lucru părea să facă problema să apară mai rar, dar nu a eliminat-o în totalitate.
Întrebările mele rămase (de la un amator de învățare!):
- Este aceasta utilizarea corectă a
proxy_set_header
, și este astfel posibil să se servească js/css de pe același server din amonte către un singur utilizator, mai degrabă decât echilibrarea sarcinii acestor solicitări relativ minore pe două servere?
- Este aceasta rădăcina probabilă a problemei, că, având în vedere că al doilea container trebuie să răspundă la unele dintre solicitările solicitate de încărcarea paginii pentru primul container, aceste răspunsuri nu sunt cumva aliniate?
- Baza mea de utilizatori ar fi 100-200 de utilizatori care accesează simultan o adresă URL la distanță dintr-o singură locație. nu cred
ip_hash
ar funcționa atunci, deoarece toate solicitările ar proveni de la același IP? Există alte modalități de a lega mai eficient un singur utilizator de un singur server?
Fișierul meu de configurare nginx:
backend în amonte {
minimum_conn;
server localhost:4000;
server localhost:4001;
}
Server {
asculta 80;
asculta [::]:80;
nume_server xxxxxxxxxx;
Locație / {
proxy_pass http://backend;
proxy_redirect http://backend/ $scheme://$gazdă/;
proxy_http_versiunea 1.1;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Gazdă $gazdă;
proxy_set_header Conexiune $connection_upgrade;
proxy_read_timeout 20d;
proxy_buffering dezactivat;
}
}