Puncte:0

Redirecționarea proxy pe NGINX nu funcționează conform așteptărilor

drapel cn

Am configurat nginx ca proxy invers pentru două servere proxy. Fiecare dintre ele (servere proxy și proxy) rulează ca container într-un mediu docker. Server proxy appalpha este pur și simplu un nginx:alpin care deservește o pagină web statică (doar în scopuri demonstrative și de testare). Toate funcționează bine aici pentru că lucrurile sunt simple. Imaginea celuilalt server proxy este kanboard/kanboard. Când încerc să accesez acest serviciu prin proxy invers la adresa https://example.com/kanboard/ Primesc mai întâi un răspuns http așteptat cu codul de stare 302 (găsit). Dar antetul este setat la Locație: /login (adică arătând spre proxy-ul meu invers) care nu există. Așteptarea mea este să văd un câmp de antet de Locație: /kanboard/login Aici.

Am încercat cu mai multe configurații propuse fără succes:

  • fără proxy_redirect
  • cu proxy_redirect
  • cu rescrie (care nu este conceptul potrivit aici, din câte am înțeles)
  • cu întoarcere (care nu este conceptul potrivit nici aici, nu?!)

ce fac greșit?

Ale mele proxy.conf dintre listele de proxy invers nginx, după cum urmează:

Server {
    asculta 443 ssl http2;
    nume_server example.com;
    server_tokens dezactivat;
    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1.3;
    ssl_ciphers "HIGH !aNULL !eNULL !EXPORT !CAMELLIA !DES !MD5 !PSK !RC4";
    ssl_prefer_server_ciphers activat;
    access_log /var/log/nginx/nginx-2443.log;
    proxy_cache_valid orice 1;

    locație /alpha {
        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;
        proxy_pass http://appalpha/;
    }

    locație /eval_kanboard {
        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;
        proxy_pass https://restore_eval_kanboard/;
    }
}

Apreciez ajutorul vostru.

Noroc Thomas

drapel us
Adresa URL de redirecționare este generată de aplicația dvs., așa că trebuie să vă uitați cum să specificați adresa URL de bază pentru `kanboard`.
tab269 avatar
drapel cn
Vă mulțumim pentru remedierea sugerată. Am setat URL-ul de bază în aplicația `kanboard` la `https://example.com/kanboard/`. Din păcate, obținem același răspuns `302 (Găsit)` cu `Locație: /login`. Nu este aceasta una dintre principalele caracteristici ale unui proxy invers pentru a putea redirecționa/rescrie cererile, precum și răspunsurile?! Și ar trebui să-i pese serverului proxy în ce mediu rulează?! Din perspectiva serverului proxy, _relativ_ `Locație: /login` _este_ corect, deoarece nu știe despre proxy invers. Dar proxy-ul invers ar trebui să poată redirecționa/rescrie către `/kanboard/login`.
drapel us
O astfel de rescriere nu poate fi implementată în mod fiabil în contextul proxy invers. Reverse proxy vede doar fluxul de text, nu are nicio idee despre organizarea sa. Adresele URL pot avea mai multe forme în fluxul de text. Efectuarea simplă a căutării și înlocuirii prin fluxul de text poate provoca tot felul de efecte secundare negative. Prin urmare, trebuie să fie configurat în aplicație.

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.