redis反向代理docker容器中的rabbit mq服务
最近做的项目中用到了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页面。