nginx学习

1、nginx简介

1、1什么是nginx

nginx是专门为性能优化而开发,性能是其最重要的考量,实现上非常注重性能效率,能经受高负载的考验
有报告表明能支持高达50000个并发连接数

1、2反向代理

1、2、1正向代理

在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
在这里插入图片描述

1、2、2反向代理

我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是反向代理服务器地址,隐藏了真实服务器IP地址。
在这里插入图片描述

1、3负载均衡

单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
在这里插入图片描述

1、4动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

在这里插入图片描述
在这里插入图片描述

2、nginx使用docker安装

参考一篇非常优秀的教学博文docker配置nginx

3、nginx的配置文件

nginx配置文件的位置

在这里插入图片描述

nginx配置文件有三部分组成

(1) nginx配置文件由三部分组成
第一部分:全局块

全局块是从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行时的配置指令
在这里插入图片描述

第二部分:events块

events块涉及指令主要影响nginx服务器与用户的网络连接
在这里插入图片描述

第三部分:http块

配置中秀嘎斯最频繁的部分
http块包括http全局块,server块
在这里插入图片描述

4、配置实例

4、1反向代理

4.1.1实现目标

使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001
访问http://xxx.0.0.0.1:9001/edu/ 直接跳转到xxx.0.0.1:8081
访问http://xxx.0.0.0.1:9001/vod/ 直接跳转到xxx.0.0.1:8088

4.1.2准备两个tomcat一个8080端口,一个8081端口

tomcat81
[root@iZf8zeb4pvftjcmv58dmy8Z ~]# docker run -d --name tomcat81 -p 8081:8080 tomcat				# 创建tomcat容器其端口为8081其中-p就是映射端口
93a60e86ebd20728f4be5cbbc15ca5ee90b269ab38753ab92deddbf8d92315ab
[root@iZf8zeb4pvftjcmv58dmy8Z ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                   PORTS                                       NAMES
93a60e86ebd2   tomcat         "catalina.sh run"        5 seconds ago    Up 4 seconds             0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   tomcat81
d0fcc0d3c89d   tomcat         "catalina.sh run"        29 minutes ago   Up 26 minutes            0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat80
94031e73c1ff   nginx          "/docker-entrypoint.…"   4 hours ago      Up 4 hours               0.0.0.0:80->80/tcp, :::80->80/tcp           nginx01
6ec4c699f539   mysql:8.0.22   "docker-entrypoint.s…"   2 days ago       Exited (0) 4 hours ago                                               sleepy_fermi
ce519f267f73   redis          "docker-entrypoint.s…"   4 days ago       Up 30 minutes            0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   redis01

在这里创建好容器之后直接访问ip:8081会报错404,需要做以下修改
因为docker下载的tomcat容器的webapps目录下是空的,所以我们需要将webapps.dist文件夹里的内容复制到webapps文件夹里面就能完成访问

[root@iZf8zeb4pvftjcmv58dmy8Z ~]# docker exec -it tomcat81 /bin/bash							# 进入tomcat容器
root@93a60e86ebd2:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@93a60e86ebd2:/usr/local/tomcat# cd webapps													#进入webapps目录
root@93a60e86ebd2:/usr/local/tomcat/webapps# ls													# 目录是空的
root@93a60e86ebd2:/usr/local/tomcat/webapps# cd ..
root@93a60e86ebd2:/usr/local/tomcat# rm -rf webapps												#删除空的webapps文件夹
root@93a60e86ebd2:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps.dist  work
root@93a60e86ebd2:/usr/local/tomcat# mv webapps.dist webapps									# 将webapps.dist文件夹下的内容复制到webapps下面
root@93a60e86ebd2:/usr/local/tomcat# cd webapps
root@93a60e86ebd2:/usr/local/tomcat/webapps# ls													# 查看新的webapps
ROOT  docs  examples  host-manager  manager

在这里插入图片描述

另一个端口为808的容器也是如上操作
在这里插入图片描述

4.1.3创建需要的前端文件

  • 8081端口的容器中创建vod文件夹及其子文件a.html内容是8081
root@93a60e86ebd2:/usr/local/tomcat/webapps# mkdir vod				# 创建文件夹
root@93a60e86ebd2:/usr/local/tomcat/webapps/vod# echo '<h1>8081</h1>' > ./a.html		# 创建并写入文件a.html
root@93a60e86ebd2:/usr/local/tomcat/webapps/vod# ls
a.html

-808端口的tomcat添加html

[root@iZf8zeb4pvftjcmv58dmy8Z ~]# docker exec -it tomcat80 /bin/bash
root@d0fcc0d3c89d:/usr/local/tomcat# cd webapps
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# mkdir edu
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# ls
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# cd edu
root@d0fcc0d3c89d:/usr/local/tomcat/webapps/edu# ls
root@d0fcc0d3c89d:/usr/local/tomcat/webapps/edu# echo '<h1>8080</h1>' > ./a.html
root@d0fcc0d3c89d:/usr/local/tomcat/webapps/edu# ls
a.html

4.1.4找到nginx配置文件,进行反向代理配置

进入被挂载的配置文件目录

[root@iZf8zeb4pvftjcmv58dmy8Z ~]# cd /root/nginx/conf
[root@iZf8zeb4pvftjcmv58dmy8Z conf]# ls
nginx.conf
#编辑配置文件
[root@iZf8zeb4pvftjcmv58dmy8Z conf]# vim nginx.conf

在这里插入图片描述
但是我访问9001的话死活出不来界面,折腾了半小时我才想起来,我一开是创建容器的时候给nginx的端口是80,所以还得将监听端口改为默认的80端口
在这里插入图片描述
看我访问的资源是vod要让他自动到8081端口执行

在这里插入图片描述
看我访问的资源是vod要让他自动到8080端口执行
在这里插入图片描述

4.2负载均衡实例

4.2.1准备在两个端口的tomcat下创建完全相同的web工程

tomcat80容器webapps下创建test工程其中的a.html内容是8080
[root@iZf8zeb4pvftjcmv58dmy8Z conf]# docker exec -it tomcat80 /bin/bash
root@d0fcc0d3c89d:/usr/local/tomcat# cd webapps
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# ls
ROOT  docs  edu  examples  host-manager  manager
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# mkdir test
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# cp edu/a.html test/a.html 
root@d0fcc0d3c89d:/usr/local/tomcat/webapps# cd test
root@d0fcc0d3c89d:/usr/local/tomcat/webapps/test# ls
a.html

tomcat81容器同理

4.2.2配置nginx.conf文件

在这里插入图片描述

4.2.3nginx负载均衡分配服务器策略

第一种 ==轮询 == (默认)
第二种 weight
weight代表权重默认为1,权重越高被分配的客户端越多
第三种 ip_hash

用法

upstream server_pool{
ip_hash;
server xxx.xxxx.xxxx:xx
server xxx.xxxx.xxxx:xx
}
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

第四种 fair
根据服务器的响应时间分配,谁的响应时间短,先响应谁

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值