代理的网址
上一章我们有提到default.conf要代理的容器网址问题,现在展开详细说1、启动要代理的容器(我以mvc项目为例)
跳转上一章:https://www.cnblogs.com/long-live/p/dn.html
1、查看docker网桥信息,看到mvc得到的ip为172.17.0.2/16
root@iZwz97sm51bf4kswvc7dbqZ:~# docker network inspect bridge
我们知道同一个服务器上同在bridge网桥下的容器是可以通过docker0的veth-pair相互通讯的
2、所以将nginx容器内修改为mvc容器ip即可,并且端口应该是mvc的容器内端口,因为现在是容器内相互通讯嘛
server {
listen 80;
listen [::]:80;
server_name ilhg.heiiii021.top;
#access_log /var/log/nginx/host.access.log main;
location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
proxy_pass https://172.17.0.2:8086; # 修改此处
}
3、浏览器查看成功
4、那么问题来了,为什么上篇博客写的是https://172.17.0.1:8001也行呢?原因很简单,因为172.17.0.1是docker0与服务器直接通讯ip,就相当于服务器的对外ip一半(因为服务器对外ip既可以被外界访问也可以在服务器内部访问所有端口,而172.17.0.1是内部的,不能被外界访问,所以只有服务器对外ip的一半功能。),再加上端口又是容器启动时服务器对外端口8001,这样一来,就相当于是从nginx容器内部去寻找服务器内部的8001端口,当然可以访问成功。只不过这就不是容器内相互访问的概念了!
server {
listen 80;
listen [::]:80;
server_name ilhg.heiiii021.top;
#access_log /var/log/nginx/host.access.log main;
location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
proxy_pass https://172.17.0.1:8001;
}
5、我们知道放在服务器上项目中的localhost就是指该服务器的对外ip,那我们测试将172.17.0.1改为localhost发现浏览器不能访问。所以说明放在服务器上的docker内某个容器的localhost绝不是服务器的对外ip,可能是它被分到的ip如172.17.0.x
标签:容器,通讯,index,ip,nginx,172.17,服务器 From: https://www.cnblogs.com/long-live/p/ngp.html