- 简介(是什么)
- 高性能的HTTP和反向代理服务器
- 占用内存少,并发能力强
- 不支持动态资源
- 支持热部署,能够不关闭服务进行升级
- 和Tomcat的区别
- Tomcat同时支持动态和静态资源,是Servlet容器、Web容器、应用服务器
- Nginx是代理服务器,支持反向代理和正向代理
- 他们都是Web服务器和Http服务器(Web服务器一定是Http服务器)
- 功能(做什么)
- 正向代理
- 简单理解就是梯子,中间。通常是为了获取正常网络访问不了的资源,需要在客户端进行手动配置
- 客户端将请求发给代理服务器B,让其帮忙进行请求
- 客户端能感知到代理服务器的存在
- 反向代理
- 客户端直接输入网址进行请求,反向代理服务器选择真实服务器获取数据后,将数据返回给客户端。
- 客户端感知不到代理服务器的存在,在其看来反向代理服务器就是真实服务器
- 隐藏真实服务器的IP地址、端口等信息。
- 负载均衡
- 将原先集中在单个服务器上的请求分发到多个服务器上,即负载分发到不同的服务器上, 就是负载均衡
- 动静分离
- 将动态页面和静态页面交给不同的服务器进行处理,加快解析速度,即动静分离
- 高并发可用集群
- 正向代理
- 原理(怎么做)
- 结构
- Nginx有两钟进程,分别为master(一个)、worker(多个)
- worker的数量和CPU数量相等最为合适
- 工作方式
- 客户端发送的请求先到master进程中,master通知woker抢占该请求。获得请求的worker将请求分发到对应的服务器
- worker的连接数
- 当访问静态资源时,一个请求占用两个连接数
- 当访问动态资源时,一个请求占用四个连接数
- 静态资源可以部署在Nginx上,不需要再访问动态资源服务器;而动态资源一定要访问动态资源服务器
- 补充:最大并发数计算方法
- worker支持最大连接数 乘以 woker数/4 —worker支持最大连接数*woker数/2
- 设计的好处
- 可以进行热部署
- 有工作的worker不动,其他worker进行更新
- worker独立进程
- 不用加锁
- 一个进程退出不影响其他进程,服务不会中断
- 当前worker异常,不影响其他worker,降低风险
- 可以进行热部署
- 结构
- 使用(实操,配合Tomcat)
- 安装
- Linux:apt-get install nginx
- 默认安装目录在 /etc/nginx,默认端口为80,可以在配置文件中修改
- 正常安装后在浏览器输入IP:80,出现页面(记得开放防火墙端口)
- 配置文件
- 位置
- 依据下面的信息可知配置文件放在/etc/nginx/nginx.conf
- 结构
- 全局块
- 配置服务器的运行,可以设置worker的数量
- events块
- 配置服务器与用户的网络连接,可以设置每个worker的连接数
- event块的配置对性能的影响较大
- http块(最主要)
- http全局块
- 文件引入
- MIME-TYPE定义
- 日志自定义
- 连接超时时间
- 单链请求上限
- http server块
- 每个server块相当于一个虚拟主机,又可分为全局server块和location块
- 全局server
- 监听配置
- 主机名字或者IP
- location
- 地址定向
- http全局块
- 全局块
- 位置
- 配置反向代理
- 配置文件中只需要修改server部分
- 只配置一个服务器
- 配置监听端口
- 配置服务名称
- 配置反代的位置,例如反代Tomcat:proxy_pass http://localhost:8081
- 若不能出现图片和css,则加入以下配置。try_files部分可以不要
- 配置多个服务器
- 配置新的Tomcat服务器
- 1、调整新的Tomcat服务器端口,运行端口和关闭端口都需要和已经存在的不同
- 2、向webapps中添加新的app
- 比如新建名为tomcat2的app,向其中加入test.html
- 配置nginx服务器
- 如果不需要开新的端口,只是需要添加新的路径,则直接用location定位到新加入的app即可。注意这里的名称和新加的app名称要一样
- 如果需要运行在新的端口,则和配置一个服务器一样,要先配置端口、服务名称,然后添加上述location
- 配置新的Tomcat服务器
- 总结
- 配置不同的服务器就是添加不同的location,唯一需要注意的是添加的location位置需要和app的名字一样
- 关于location处符号的说明
- 配置负载均衡
- 在两台Tomcat服务器中添加同名app,例如test。可以编写不同的内容以作区分
- 在http块中添加
- 在server块中添加
- 在浏览器多次访问test,应出现不同的内容
- 分发策略
- 轮询(默认)
- 按照请求的时间顺序分配到不同的服务器。
- 如果某一台服务器故障,会进行跳过
- weight
- 设置权重,权重越大的服务器被请求的概率越高
- ip_hash
- 每个ip地址依据hash结果,固定访问同一台服务器,除非高服务故障,否则不会访问新服务器
- 用来姐绝session问题
- 配置方式,在服务器前协写上ip_hash声明
- fair
- 按照服务器相应时间分配,响应时间短的先分配
- 在服务器后写上fair声明
- 轮询(默认)
- 总结
- 设置upstream,将具有相同服务的服务器写到一组中
- 设置location,将一组相同服务的服务器同时进行反代
- 反向代理和负载均衡的区别
- 反向代理是一个server,多个location(不同服务器跑不同服务)
- 负载均衡是多个server,一个location(不同服务器跑相同服务)
- 配置动静分离
- 1、在服务器准备静态文件
- image放图片,www放页面文件
- 2、配置location
- 注意location的名字和文件夹名字应该一样
- root后面的路径为文件夹的绝对路径
- nginx配置文件中,root指令表示Nginx服务器在响应请求时,要将文件目录映射到浏览器的URI上。当URI以斜杠结尾时,nginx会把请求
路径和root路径合并,若root路径本身已经有一个结尾斜杠,则不会再次添加。因此,在对应root路径的指令后需要注意斜杠的处理。
如果root路径末尾有斜杠,请求路径也以斜杠结尾,nginx会自动进行合并。如果root路径末尾没有斜杠,请求路径以斜杠结尾,nginx
会将root路径作为目录,请求路径作为文件,导致文件不存在。 - 参考:nginx中斜杠(‘/‘)总结_nginx location 斜杠-CSDN博客、nginx 神奇的斜线,各种斜线的搭配访问结果_nginx 斜杠 302-CSDN博客
- 当页面输入ip/image/1.jpg进行访问的时候。实际真实路径为:/home/linclo/data/image/1.jpg
- 3、配置完静态资源,剩下的就全是动态了,上面的反代和均衡其实就是动态处理的方式
- 1、在服务器准备静态文件
- 配置高可用集群
- 只有一台nginx不够保险,需要另外一个nginx服务器作为备用
- 准备工作
- nginx主服务器
- nginx备份服务器
- 虚拟ip
- keepalived
- (暂时用不到)
- 命令
- Linux查看后台运行端口netstat -tunlp|grep nginx
- Linux查看运行程序ps -ef|grep nginx
- nginx常用命令
- 查看版本:nginx -v
- 查看帮助:nginx -?或者nginx -h
- 启动服务:nginx
- 停止服务:nginx -s stop
- 重新加载配置文件:nginx -s reload
- 安装
Nginx及配合Tomcat的简单使用
于 2024-04-06 18:40:06 首次发布