正向代理和反向代理

参考:

博客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端来说是“透明”的(客户端不知道真正提供服务的是谁),这个概念,一下子就能明白,什么是负载均衡:

原文地址:https://www.cnblogs.com/kongweisi/p/14769483.html