前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx基础篇--docker搭建nginx

Nginx基础篇--docker搭建nginx

作者头像
小土豆Yuki
发布2020-06-15 17:17:08
7430
发布2020-06-15 17:17:08
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

Nginx是一个轻量级,高性能,基于HTTP的,反向代理服务器,同时还是一个电子邮件服务器,Nginx是有俄罗斯人用c语言开发的,2004年10月发布第一个版本,国内很多大公司都在使用例如百度,京东,淘宝等等。

代理服务器根据代理对象的不同,可以分为正向代理和反向代理,这里的正和反是相对于客户端的角度。

正向代理

正向代理是对客户端的代理,客户端A想要从服务端C获取资源,由于某些原因不能正常访问,于是使用另外一台服务器主机B去访问服务端C,等到服务端C响应主机B后,主机B在转回给客户端A,此时的主机B就是A客户端的一个正向代理

客户端在使用正向代理的时候,就知道访问目标服务器的地址等信息,正向代理服务器是服务器的用户架设的主机,与服务端无关,服务端是不知道真正的客户端的存在

Nginx常见功能如下

  • 隐藏 向服务端隐藏真正的访问者,因为对于服务器来说,真正的访问者是正向代理,而服务端是不知道正向代理真正的访问者是客户端,因此隐藏可客户端的存在,正如常见的电信诈骗就是针具这个功能实现隐藏真正拨打电话的电话号码,而诈骗者是拨打的电话是正向代理的电话,有正向代理拨打我们的真实电话
  • 翻墙 翻墙是由于某些原因,我们无法访问某些服务器,但是我们可以通过正向代理去访问我们的想要访问的服务器,这种就是我们的翻墙,正如我想要访问Google,我们不能直接访问,我们就会使用一些翻墙软件,在翻墙软件写入正向代理的地址,这样,我们就可访问正向代理代理访问Google网站。
  • 提速 往往我们直接访问服务端是一个低速网络链路,其访问效率低下,但是客户端可以使用另外一台主机P,去访问服务端,它们使用的链路都是高速链路,此时就可把主机p构建成一个正向代理。通过正向代理的效率比直接访问的效率要高很多。
  • 缓存 若客户端是想获取服务端的资源为主,则可以在客户端可以在服务端之间添加正向代理,当客户端访问服务端获取资源时候,先到正向代理查看是否有想要的资源,若有,直接返回,若没有,正向代理访问服务端获取资源,服务端响应正向代理后,缓存资源,在返回给客户端,这样不仅增加了响应速度,也增强可用户的体验度,提高整个系统的执行效率。我们常用的Maven的Nexus就是一个典型的缓存正向代理
  • 授权 往往很多公司的内网是没有办法访问外网的,只有部分人有权限访问外网,而这种就是在正向代理中设置公司局域网的链接外网权限,即添加防火墙添加新的规则,实现是否通过防火墙

反向代理

反向代理Reverse Proxy,是对服务端的代理,但从功能上说和正向代理没有区别,但是反向代理是为服务端架设的主机,与客户端无关,客户端认为自己访问的是服务本身,但其实真正访问的反向代理服务器。客户端在访问反向代理服务器时,根本就不知道真正访问的目标服务器的地址及信息,所有的访问都是通过反向代理的完成的,这就是和正向代理不同的地方。

  • 保护隐藏

客户端只能访问反向代理服务器,而真正的服务器是不能直接访问的,这样实现了隐藏和保护真正服务器的目的

  • 负载均衡 客户端集中访问时候,产生的高并发问题,对于分布式服务系统,反向代理会根据请求功能的不同,分发到不同的服务器,当集群服务器系统,反向代理会根据服务器的负载量,将请求转发到负载比较轻的服务器,而这就就是是反向代理的效果
  • 动静分离 动态资源是指,需要经过服务端代码运算后可形成的资源,例如jsp页面就是动态资源,因为页面的数据是通过DB查询出来的 静态资源是指,不需要任何运算,固定不变的资源,比如,图片,视频,css,js等资源 反向代理是就是把动态资源和静态资源请求进行分离,降低了应用服务器的压力
  • 数据缓存 反向代理也具有缓存的功能,客户端请求的静态资源缓存到代理服务器中,当再有请求相同的资源的时候,反向代理直接返回资源即可。

Nginx特定

  • 高并发
  • 低消耗
  • 高扩展
  • 高可用
  • 热部署

nginx的web请求处理机制

Nginx结合多进程机制和异步机制对外提供服务,异步机制就是异步非阻塞方式,Nginx的master进行会产生多个worker进程,maste进程管理每一个worker进程的生命周期,以及处理外部命令和处理perl脚本等,worker进程用于接受和处理客户端请求

每个woeker进程使用异步非阻塞方式处理多个客户端请求,当某个woeker进程接受到客户端请求以后,会调用IO进程处理,服务端没有立刻得到相应,woeker可以处理其他请求,当worker得到相应的时候,woker当前处理的事物会挂起,拿IO的结果相应客户端请求,woeker进程采用的是epoll事件驱动模型和io进行通讯,epoll模型底层使用的是回调callbock替代轮询,要比select模型效率高,

docker搭建nginx

  1. 拉去镜像 wangxuandeMacBook-Air:~ wangxuan$ docker pull nginx Using default tag: latest latest: Pulling from library/nginx bc51dd8edc1b: Already exists 66ba67045f57: Pull complete bf317aa10aa5: Pull complete Digest: sha256:ad5552c786f128e389a0263104ae39f3d3c7895579d45ae716f528185b36bc6f Status: Downloaded newer image for nginx:latest
  2. 运行镜像 docker run -d -p 80:80 --name webserver nginx
  3. 复制容器的配置文件到本地的 docker cp 1abb674afe55:/etc/nginx/conf.d/default.conf /Users/wangxuan/Downloads/nginx/conf/conf.d/default.conf docker cp 1abb674afe55:/usr/share/nginx/html /Users/wangxuan/Downloads/nginx/html docker cp 1abb674afe55:/etc/nginx/nginx.conf /Users/wangxuan/Downloads/nginx/conf/nginx.conf
  4. 删除容器 docker stop webserver docker rm webserver
  5. 挂在本地文件运行nginx容器 docker run -d -p 80:80 --name nginx -v /Users/wangxuan/Downloads/nginx/html:/usr/share/nginx/html -v /Users/wangxuan/Downloads/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Users/wangxuan/Downloads/nginx/conf/conf.d:/etc/nginx/conf.d nginx
  6. 方位http://localhost:80,看到下图运行成功
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档