redis反向代理docker容器中的rabbit mq服务

702 阅读1分钟

最近做的项目中用到了docker,发现docker容器还真挺好用的,可以统一来管理各种资源,项目。

但是在实际使用中就碰到下面这个问题(下面所有的应用都是在docker中启动的):

通过nginx来反向代理 docker中的服务时发现了一个坑,自己记录之。也供大家碰到类似问题可以参考 。

网上去查nginx如何反向代理rabbit mq 的Web管理端,会统一出来下面这样的配置:

server {
    listen    80;
    server_name www.xxxxx.com;
    location / {
        client_body_buffer_size 128k;
        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    4k;
        proxy_buffers     16 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_connect_timeout 30s;
        proxy_pass   http://localhost:15672;
        proxy_set_header   Host   $host;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

如果仅仅是这样写nginx.conf中的配置文件,访问的时候只会出现一个404的页面。

原因在于:docker不同container中启动的服务所处的IP地址是不同的,所以不能反向代理到localhost或 127.0.0.1中 解决方法: 找到容器在docker中分配的ip地址,替换掉nginx.conf中 proxy_pass中的地址

docker inspect rabbitmq(具体容器名称) 然后只用关注Networks -> bridge->IPAddress ,就可以找到真实的容器IP

替换掉redis.conf中的IP,重启redis服务,反向代理正常出来WEB页面。