Рейтинг:0

Простой обратный прокси с nginx и докером выдает 404

флаг at

У меня очень простая установка. Три контейнера в докере, между которыми я хочу общаться, больше ничего. Злоумышленник (kali с nginx), обратный прокси-сервер (alpine с nginx) и жертва (alpine). Я хотел бы внутри жертвы свернуть обратный прокси-сервер и получить веб-сайт злоумышленника. Пока я могу получить сайт злоумышленника напрямую завиток http://172.17.0.2:5555 и обратный прокси завиток http://172.17.0.3/ . Но когда я сделаю завиток http://172.17.0.3/мерлин Я получил:

<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>

Для обратного прокси (172.17.0.3) мой /etc/nginx/conf.d/default.conf :

сервер {
    слушать 80;
    слушать [::]:80;
    прокси имя_сервера;

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

    место расположения / {
        корень /usr/share/nginx/html;
        индекс index.html index.htm;
    }

    местоположение / Мерлин {
        прокси_пасс http://172.17.0.2:5555;
    }
    #error_page 404 /404.html;

    # перенаправить страницы ошибок сервера на статическую страницу /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    местоположение = /50x.html {
        корень /usr/share/nginx/html;
    }
}

Для злоумышленника (172.17.0.2) мой /etc/nginx/conf.d/default.conf :

сервер {
    слушать 5555;
    слушать [::]:5555;
    имя_сервера локальный хост;

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

    место расположения / {
        корень /usr/share/nginx/html;
        индекс index.html index.htm;
    }


    #error_page 404 /404.html;

    # перенаправить страницы ошибок сервера на статическую страницу /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    местоположение = /50x.html {
        корень /usr/share/nginx/html;
    }

}

Грант Коллинз на ютубе справился что-то похожее, но я просто не могу заставить его работать.

Richard Smith avatar
флаг jp
`http://172.17.0.3/merlin` передается в `http://172.17.0.2:5555/merlin`, поэтому, вероятно, вы получаете ответ 404.
флаг at
Это?? Извините, я этого не вижу, должен ли я писать `proxy_pass` по-другому или это что-то в default.conf злоумышленника?
Richard Smith avatar
флаг jp
См. [эти вопросы и ответы] (https://serverfault.com/questions/379675/nginx-reverse-proxy-url-rewrite)
флаг at
Теперь понял, спасибо! Мне нужно добавить перезаписи, если я хочу, чтобы он перешел на `http://172.17.0.2:5555`. Я сделал это так: `rewrite ^/merlin?$/break;`, но это не сработало, хотя я уверен, что просто я еще не понял, как писать перезаписи. Еще раз спасибо!
флаг at
На самом деле все, что потребовалось, это добавить `/` в место, подобное этому: `место/мерлин { прокси_пароль http://172.17.0.2:5555/; } ` Поскольку косая черта «удалит» первую часть uri(?), она станет просто `http://172.17.0.2/`
Рейтинг:0
флаг at

Как заметил Ричард http://172.17.0.3/мерлин передается http://172.17.0.2:5555/мерлин которого не существовало, отсюда и 404. Что мне нужно было сделать, так это использовать переписать изменить это. В моем случае меняется прокси_пасс http://172.17.0.2:5555; к прокси_пароль http://172.17.0.2:5555/; хватило. (ответьте, почему - здесь).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.