Puncte:0

Proxy invers simplu cu nginx și docker dă 404

drapel at

Am o configurație foarte simplă. Trei containere în docker între care vreau să comunic, nimic altceva. Atacatorul (kali cu nginx), proxy invers (alpin cu nginx) și victimă (alpin). Aș dori, în interiorul victimei, să curl reverse-proxy și să obțin site-ul web al atacatorului. Până acum pot obține site-ul atacatorului direct de curl http://172.17.0.2:5555 și reverse-proxy este de curl http://172.17.0.3/ . Dar când o fac curl http://172.17.0.3/merlin Eu iau:

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.18.0</center>
</body>
</html>

Pentru reverse-proxy (172.17.0.3) my /etc/nginx/conf.d/default.conf :

Server {
    asculta 80;
    asculta [::]:80;
    server_name proxy;

    #access_log /var/log/nginx/host.access.log principal;

    Locație / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }

    locație /merlin {
        proxy_pass http://172.17.0.2:5555;
    }
    #error_page 404 /404.html;

    # redirecționează paginile de eroare ale serverului către pagina statică /50x.html
    #
    pagina_eroare 500 502 503 504 /50x.html;
    locație = /50x.html {
        root /usr/share/nginx/html;
    }
}

Pentru atacator (172.17.0.2) my /etc/nginx/conf.d/default.conf :

Server {
    asculta 5555;
    asculta [::]:5555;
    nume_server gazdă locală;

    #access_log /var/log/nginx/host.access.log principal;

    Locație / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }


    #error_page 404 /404.html;

    # redirecționează paginile de eroare ale serverului către pagina statică /50x.html
    #
    pagina_eroare 500 502 503 504 /50x.html;
    locație = /50x.html {
        root /usr/share/nginx/html;
    }

}

Grant Collins pe YouTube a reușit ceva similar, dar pur și simplu nu pot să-l fac să funcționeze.

Richard Smith avatar
drapel jp
`http://172.17.0.3/merlin` este transmis la `http://172.17.0.2:5555/merlin`, motiv pentru care, probabil, obțineți răspunsul 404.
drapel at
Este?? Îmi pare rău că nu văd asta, ar trebui să scriu `proxy_pass` altfel sau este ceva în atacatorul default.conf?
Richard Smith avatar
drapel jp
Vedeți [aceste întrebări și răspunsuri](https://serverfault.com/questions/379675/nginx-reverse-proxy-url-rewrite)
drapel at
Am înțeles acum, mulțumesc! Trebuie să adaug o rescriere dacă vreau să ajungă la `http://172.17.0.2:5555`. Mi-a făcut acest lucru `rewrite ^/merlin?$ / break;`, dar nu a funcționat, deși sunt sigur că eu nu am înțeles încă cum să scriu rescrieri. Multumesc din nou!
drapel at
De fapt, tot ce a fost nevoie a fost adăugarea unui „/” într-o locație ca aceasta: `location /merlin { proxy_pass http://172.17.0.2:5555/; } ` Deoarece acea bară oblică va „șterge” prima parte a uri(?), așa că devine doar `http://172.17.0.2/`
Puncte:0
drapel at

După cum a observat Richard http://172.17.0.3/merlin se transmite la http://172.17.0.2:5555/merlin care nu exista, de unde 404. Ceea ce trebuia să fac era să folosesc a rescrie pentru a schimba asta. În cazul meu în schimbare proxy_pass http://172.17.0.2:5555; la proxy_pass http://172.17.0.2:5555/; a fost de ajuns. (răspuns de ce - Aici).

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.