使用 nginx 和 docker 的简单反向代理出现 404

使用 nginx 和 docker 的简单反向代理出现 404

我有一个非常简单的设置。docker 中的三个容器我想在它们之间进行通信,没有其他的。攻击者(带有 nginx 的 kali)、反向代理(带有 nginx 的 alpine)和受害者(alpine)。我想在受害者内部 curl 反向代理并获取攻击者的网站。到目前为止,我可以直接通过 获取攻击者的网站,curl http://172.17.0.2:5555通过 获取反向代理的网站curl http://172.17.0.3/。但是当我这样做时,curl http://172.17.0.3/merlin我得到:

<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

server {
    listen       80;
    listen  [::]:80;
    server_name  proxy;

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

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /merlin {
        proxy_pass http://172.17.0.2:5555;
    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

对于攻击者(172.17.0.2),我的/etc/nginx/conf.d/default.conf

server {
    listen       5555;
    listen  [::]:5555;
    server_name  localhost;

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

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }


    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

YouTube 上的 Grant Collins 已经成功相似的东西,但我就是无法让它工作。

答案1

正如 Richard 注意到的http://172.17.0.3/merlin,传递给http://172.17.0.2:5555/merlin它的不存在,因此出现 404。我需要做的是使用改写改变这一点。就我而言,改变proxy_pass http://172.17.0.2:5555;proxy_pass http://172.17.0.2:5555/;足够了。(回答为什么 -这里)。

相关内容