docker nginx容器作为反向代理

docker nginx容器作为反向代理

我正在尝试使用 nginx 容器设置反向代理,并将一些其他容器化应用程序路由到后面。我已将 nginx 中的 default.config 修改为以下内容。我没有更改任何内容nginx.config

server {
    listen       80;
    server_name  localhost;

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

    location /mailhog {
        proxy_pass http://mailhog:8025;
    }

    location /httpd {
        proxy_pass http://httpd:8080;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

我的dockerfile使用nginx镜像并且仅替换了default.config。

Docker 运行命令

docker run -d --name mailhog -p 8025:8025 mailhog/mailhog
docker run -d --name httpd -p 8080:80 httpd    
docker run -d --name mynginx --link=httpd --link=mailhog -p 80:80 mynginx

当我导航到 / 时,我得到了标准的 nginx 索引页。Mailhog 给出 404,httpd 给出 502。我尝试了 docker runs 命令的几个变体,例如使用--expose或不打开任何端口。如果我导航实际的 URL,应用程序可以正常工作,只是不能通过反向代理。

我从这里。我考虑过使用nginx-proxy,但我不想使用 subdomain.domain url 模式。

答案1

问题是 proxy_pass url 末尾需要一个斜杠。

...
location /mailhog/ {
   proxy_pass http://mailhog:8025/;
}
...

相关内容