正向代理和反向代理
参考:
博客1:https://www.cnblogs.com/Anker/p/6056540.html
博客2:https://www.zhihu.com/question/24723688
最近在做OTA工作,需要搞懂前后端服务在我司产品上时怎么跑的,其中前端是部署在nginx上的,于是想研究一下相关的东西。
首先,前端是跑在docker容器中的,容器中装了nginx;
然后,我们看下docker构建这个镜像的DockerFile:
FROM arm64-nginx:v1.0.0 ENV HTTP_PORT 80 ENV HTTPS_PORT 443 ENV RTMP_PORT 1935 ENV PIC_PORT 8077 EXPOSE 80 8077 COPY ./dist /var/www/html COPY ./nginx.conf /etc/nginx/nginx.conf.template VOLUME /usr/local/share/images #CMD [ "nginx", "-g", "daemon off;" ] CMD envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < \ /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf && \ nginx
进一步,看下镜像运行容器的命令:
docker run -d -v /data/images:/usr/local/share/images -v /data/nginx/nginx/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/nginx/nginx.conf.template:/etc/nginx/nginx.conf.template -v /data/nginx/html/config.js:/var/www/html/config.js --net=host --name=web-service --restart=always 镜像id
很明显,需要关注下 /etc/nginx/nginx.conf 这个文件,因为-v映射的关系,在宿主机或容器内外都可以看:
/etc/nginx/nginx.conf:
可以看到,web server运行起来默认监听80端口,然后通过nginx反向代理这个server,使得可以通过这个server访问多个端口,
而对于client来说,这个是透明的,client并不知道server进行了代理,这就是反向代理。
当然了,nginx还有负载均衡的作用,可以参考下面的图,结合,server进行反向代理对client端来说是“透明”的(客户端不知道真正提供服务的是谁),这个概念,一下子就能明白,什么是负载均衡: