问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Nginx及配合Tomcat的简单使用

创作时间:
作者:
@小白创作中心

Nginx及配合Tomcat的简单使用

引用
CSDN
1.
https://blog.csdn.net/qq_43761203/article/details/137434790

Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器,以其低内存占用和强大的并发处理能力而闻名。它不支持动态资源,但支持热部署,能够在不中断服务的情况下进行升级。Nginx常与Tomcat等应用服务器配合使用,实现动静分离、负载均衡等功能,以提高网站的性能和稳定性。

Nginx与Tomcat的区别

  • Tomcat:同时支持动态和静态资源,是Servlet容器、Web容器、应用服务器。
  • Nginx:是代理服务器,支持反向代理和正向代理。两者都是Web服务器和HTTP服务器(Web服务器一定是HTTP服务器)。

Nginx的主要功能

正向代理

简单理解就是梯子,中间。通常是为了获取正常网络访问不了的资源,需要在客户端进行手动配置。

客户端将请求发给代理服务器B,让其帮忙进行请求。客户端能感知到代理服务器的存在。

反向代理

客户端直接输入网址进行请求,反向代理服务器选择真实服务器获取数据后,将数据返回给客户端。

客户端感知不到代理服务器的存在,在其看来反向代理服务器就是真实服务器。隐藏真实服务器的IP地址、端口等信息。

负载均衡

将原先集中在单个服务器上的请求分发到多个服务器上,即负载分发到不同的服务器上,就是负载均衡。

动静分离

将动态页面和静态页面交给不同的服务器进行处理,加快解析速度,即动静分离。

高并发可用集群

将请求分发到多个服务器上,提高系统的可用性和稳定性。

Nginx的工作原理

结构

Nginx有两种进程,分别为master(一个)、worker(多个)。worker的数量和CPU数量相等最为合适。

工作方式

客户端发送的请求先到master进程中,master通知woker抢占该请求。获得请求的worker将请求分发到对应的服务器。

worker的连接数

  • 当访问静态资源时,一个请求占用两个连接数
  • 当访问动态资源时,一个请求占用四个连接数
  • 静态资源可以部署在Nginx上,不需要再访问动态资源服务器;而动态资源一定要访问动态资源服务器

补充:最大并发数计算方法

worker支持最大连接数 乘以 woker数/4 —worker支持最大连接数*woker数/2

设计的好处

  • 可以进行热部署
  • 有工作的worker不动,其他worker进行更新
  • worker独立进程
  • 不用加锁
  • 一个进程退出不影响其他进程,服务不会中断
  • 当前worker异常,不影响其他worker,降低风险

Nginx的使用(配合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:
  • 地址定向
  • 配置反向代理

配置文件中只需要修改server部分

配置多个服务器

配置新的Tomcat服务器:

  1. 调整新的Tomcat服务器端口,运行端口和关闭端口都需要和已经存在的不同
  2. 向webapps中添加新的app
    比如新建名为tomcat2的app,向其中加入test.html

配置nginx服务器:

  • 如果不需要开新的端口,只是需要添加新的路径,则直接用location定位到新加入的app即可。注意这里的名称和新加的app名称要一样
  • 如果需要运行在新的端口,则和配置一个服务器一样,要先配置端口、服务名称,然后添加上述location

总结:配置不同的服务器就是添加不同的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路径作为目录,请求路径作为文件,导致文件不存在。

当页面输入ip/image/1.jpg进行访问的时候。实际真实路径为:/home/linclo/data/image/1.jpg

  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

参考教程:01-nginx课程介绍_哔哩哔哩_bilibili
补充教程:1.nginx介绍_哔哩哔哩_bilibili
脑图:https://download.csdn.net/download/qq_43761203/89090945

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号