Mic de statura:
Am două servere diferite în spatele unui proxy nginx. Când încerc să ajung la unul dintre ele, voi fi întotdeauna redirecționat către celălalt care se află la locația rădăcină. Acest lucru se întâmplă O dată. Jurnalele sugerează că Firefox/Chrome nu trimit o solicitare GET către nginx atunci când introduc adresa prima dată. Când introduc adresa URL a doua oară într-o sesiune Firefox/Chrome voi ajunge la serverul corect.
Mai lung:
În configurația mea, am două servere într-o rețea docker unde „https://server.app/” ar trebui să fie direcționat către „http://docker-server-1:80” și „https://server.app/client” " ar trebui să fie transmis la "http://docker-server-2:8090/client".
Configurația mea nginx arată așa
evenimente {}
http {
Server {
nume_server server.app;
asculta 443 ssl;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
error_log /etc/nginx/nginx.log depanare;
locație /client {
proxy_pass http://docker-server-2:8090/client;
proxy_set_header Gazdă $gazdă;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;
}
Locație / {
proxy_pass http://docker-server-1:80;
proxy_set_header Gazdă $gazdă;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;
}
}
}
Când intru „https://server.app/client”, voi ajunge la serverul corect când a) deschid această pagină în modul incognito Firefox/Chrome, b) folosesc un instrument simplu și naiv precum curl/wget, c ) Am șters memoria cache din Firefox/Chrome și nu au mai văzut niciodată „https://server.app” sau d) Adaug index.html și introdu „https://server.app/client/index.html”.
Când vizitez „https://server.app” și încerc să deschid mai târziu „https://server.app/client”, pagina „https://server.app” va fi încărcată în loc de O dată pe sesiune de browser. Când introduc a doua oară adresa URL a subdirectorului, voi ajunge la serverul corect până când îmi închid browserul și îl deschid din nou. Apoi voi termina încă o dată la „https://server.app” când intru în „https://server.app/client”.
Partea ciudată este că nu văd nicio solicitare GET în jurnalul nginx când intru „https://server.app/client” cu Firefox/Chrome non-incognito. Se pare că ambele browsere folosesc o versiune în cache a „https://server.app” când introduc „https://server.app/client”, dar nu îmi dau seama de ce. Acesta este motivul pentru care presupun că browserele fac parte din problemă, dar cum le pot spune să nu facă această redirecționare?