一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇

写在前面:本文的Nginx是在Linux环境下使用的,需要掌握Linux知识和JavaWeb知识
Linux教学:
保姆级教学!Linux操作3天快速入门系列 第一天【篇一】(常用命令)
保姆级教学!Linux操作3天快速入门系列 第二天【篇二】(整合常用命令)
保姆级教学!Linux操作3天快速入门系列 第三天【篇三】(附带CentOS7的jdk,Tomcat安装)

作者公众号:小白编码

本文目录:

    • 什么是 nginx
    • Nginx安装
      • 1.安装编译工具及库文件
      • 2.安装pcre包的时候提示缺少c++编译器
      • 3.安装 pcre 依赖
      • 4.安装 nginx
    • Nginx 的常用的命令
    • Nginx配置文件介绍:
      • 配置文件中的内容
      • location 指令说明
    • 反向代理介绍
    • 负载均衡介绍
    • 动静分离介绍
    • Nginx使用:
      • 首先配置多个Tomcat
      • 配置4个tomcat
      • 修改端口
      • Nginx 反向代理一:
      • Nginx反向代理二:
      • Nginx 动静分离
      • Nginx 负载均衡
    • 最后:

什么是 nginx

Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验 有报告表明能支持高达 50,000 个并发连接数。

Nginx安装

1.安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c ++ libtool openssl openssl-devel

2.安装pcre包的时候提示缺少c++编译器

使用yum安装

yum -y install gcc-c++
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

3.安装 pcre 依赖

  • 第一步 联网下载 pcre 压缩文件依赖
    wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre 8.37.tar.gz

  • 第二步 解压压缩文件使用命令

    tar -xvf pcre8.37.tar.gz
    
  • 进入:cd pcre-8.37

  • 第三步./configure 完成后,

  • 编译且安装

    make && make install
    
  • 安装openssl 、 zlib 、 gcc依赖

    yumy install make zlib zlib devel gcc c++ libtool openssl openssl devel
    

4.安装 nginx

  • 使用命令解压好nginxtar
  • 进入解压后的nginx目录然后执行./configure
  • 编译安装:make && make install
  • 进入目录 /usr/local/nginx/sbin/
  • 测试,输入ip地址

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第1张图片

Nginx 的常用的命令

以下命令需要先进入/nginx/sbin下

首先:
cd /usr/local/nginx/sbin
1 查看 nginx 版本号
./nginx -v
2 启动 nginx
./nginx
3 停止 nginx
./nginx -s stop
4 重新加载 nginx
./nginx -s reload

5.修改配置文件
cd /usr/local/nginx/conf/
vim nginx.conf

Nginx配置文件介绍:

配置文件地址:cd /usr/local/nginx/conf/

使用Vim可以修改vim nginx.conf

配置文件中的内容

全局块: 配置服务器整体运行的配置指令
比如 worker_processes 1; 处理并发数的配置
events 块 : 影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024
http 块:包含两部分:http 全局块,server 块

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第2张图片

location 指令说明

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第3张图片

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

2、~:用于表示 uri 包含正则表达式,并且区分大小写。

3、~:用于表示 uri 包含正则表达式,并且不区分大小写。

4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

反向代理介绍

反向代理就是:暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。然后反向代理到指定的服务器。

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第4张图片

负载均衡介绍

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第5张图片

动静分离介绍

动静分离就是通过nginx设置,将静态资源和动态资源分开存放,若客户端请求的是静态资源,nginx自动转发到静态资源的目录,而当客户端请求的是动态资源,那么nginx将会请求转发到动态资源目录,获取动态资源。

动态资源有: jsp,servlet等等

静态资源有: html,css,img等等

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第6张图片

Nginx使用:

首先配置多个Tomcat

tomcat/conf/server.xml 是tomcat服务配置文件,下面把该配置文件中各端口的含义说明下.

port=“8005” shutdown=“SHUTDOWN”>接受服务器关闭指令的端口号,我们叫关闭指令端口.

port=“8080” protocol="HTTP/1.1 connectionTimeout=“20000”

redirectPort=“8443” />`

http请求处理端口,我们在网页上输入的普通url地址包含的端口就是他 .这个端口叫http端口.

redirectPort=“8443” />

https请求的处理端口.这个端口叫https端口.

port=“8009” protocol=“AJP/1.3” redirectPort=“8443” />接收AJP协议的处理端口.这个端口叫ajp端口.

redirectPort=“8443” />

https请求的处理端口,实际上就4个端口 。

下面我以一个系统里启动3个tomcat为例,说明下操作步骤

分配端口

Tomcat8080端口分配表(tomcat1全部采用默认配置)

端口 端口号
关闭指令端口 8005
http端口 8080
https端口 8443
Ajp端口 8009

Tomcat8081端口分配表

端口 端口号
关闭指令端口 8006
http端口 8081
https端口 8444
Ajp端口 8010

Tomcat8082端口分配表

端口 端口号
关闭指令端口 8007
http端口 8082
https端口 8445
Ajp端口 8011

然后启动这三个tomcat即可

配置4个tomcat

分别解压到这4个文件夹

tomcat8080建test8080  

tomcat8081建test8081

tomcat8082建test8082

tomcat8083建test8083

修改端口

进入tomcat的conf中,修改 vim server.xml(以上方式)

Nginx 反向代理一:

配置Nginx

实现效果: 通过输入ip地址,访问的是tomcat的8080端口页面

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第7张图片

效果图:

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第8张图片

Nginx反向代理二:

第一步,准备两个 tomcat ,一个 8001 端口,一个 8002 端口,并准备好测试的页面
第二步,修改 nginx 的配置文件
在http 块中添加 server{}

实现效果:

使用 nginx 反向代理, 根据访问的路径跳转到不同端口的服务中nginx 监听端口为 80
访问 http://ip地址/test8080/ 直接跳转到 ip地址:8080
访问 http://ip地址/test8081/ 直接跳转到 ip地址:8081

配置Nginx

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第9张图片

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第10张图片

测试:

访问test8080一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第11张图片

访问test8081
一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第12张图片

Nginx 动静分离

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去 服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d ,表示在这 3 天之内访问这个 URL ,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304如果有修改,则直接从服务器重新下载,返回状态码 200 。

动态请求: 通俗的讲:需要查询数据,则要经过tomcat

静态请求: 通俗的讲,需要查询静态的图片,nginx转发到静态资源服务器

前提: 在根目录下创建/data,放静态资源
一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第13张图片
一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第14张图片

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第15张图片

配置Nginx

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第16张图片
测试效果:

静态网页:

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第17张图片

静态图片:

Nginx 负载均衡

nginx 分配服务器策略
第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
第二种 weight
weigh t 代表权重默认为 1, 权重越高被分配的客户端越多
第三种 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
第四种 fair (第三方
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

在每个tomcat中加入一个文件avgtest分别放入a.html:

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第18张图片

配置Nginx:

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第19张图片

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第20张图片

测试:

第一次刷新

一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第21张图片

第二次刷新:
一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第22张图片

3个分配服务器策略配置:

权重:一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第23张图片
ip_hash:
一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第24张图片
fair分配:
一文介绍使用Nginx(实现反向代理,负载均衡,动静分离) -JavaEE篇_第25张图片

最后:

以上就是Nginx的简单介绍与使用,如果对你有帮助可以点赞支持^ _ ^
公众号:小白编码

你可能感兴趣的:(服务器知识,JavaEE)