Nginx【反向代理负载均衡动静分离】--上

Nginx【反向代理负载均衡动静分离】–上

先看2 个实际需求,引出Nginx

需求1: 访问不同微服务

示意图

Nginx【反向代理负载均衡动静分离】--上_第1张图片

需求2: 轮询访问服务

示意图

Nginx【反向代理负载均衡动静分离】--上_第2张图片

解决方案: Nginx

  1. 反向代理

  2. 负载均衡

  3. 动静分离

Nginx【反向代理负载均衡动静分离】--上_第3张图片

高可用集群

  1. Nginx 在分布式微服务架构的位置

Nginx【反向代理负载均衡动静分离】--上_第4张图片

Nginx【反向代理负载均衡动静分离】--上_第5张图片

基本介绍

Nginx 是什么? 能干什么?

  1. 是什么:Nginx (“engine x”) 是一个高性能的HTTP 和反向代理WEB 服务器

  2. 能干什么:反向代理负载均衡动静分离

  3. 牛逼之处:高性能,高负载有报告表明能支持高达50,000 个并发连接数

  4. 详细说明:https://lnmp.org/nginx.html

官方资料

  1. 官网:https://nginx.org/

  2. 使用文档:https://nginx.org/en/docs/

Nginx 核心功能

正向代理

一句话:如果我们要访问www.google.com 但是直接访问不到,则需要通过代理服务器来访问,这种代理服务就称为正向代理
Nginx【反向代理负载均衡动静分离】--上_第6张图片

图解

  1. 我们知道www.google.com , 但是访问不到
  2. 所以使用代理服务器帮助我们(即客户端)来上网, 注意帮助的对象是客户端, 这种代理,我们称为正向代理.
  3. 正向代理同时也隐藏了客户端信息.
  4. 再次说明,正向代理帮助的是客户端, 因此可以把客户端+正向代理服务, 视为一个整体

反向代理

一句话:客户端将请求发送到代理服务器,由代理服务器去选择目标服务器获取数据后,返回给客户端,这种代理方式为反向代理

一图胜千言

Nginx【反向代理负载均衡动静分离】--上_第7张图片

图解

  1. 项目设计者, 不希望客户端直接访问目标Web 服务器(比如目标Web 服务器是集群, 如果直接访问就会提供多个公网IP), 而是希望提供一个统一的访问IP, 这个是理解反向代理的前提,即为什么要反向代理.
  2. 反向代理帮助的对象是目标Web 服务器
  3. 当客户端请求达到反向代理服务后,由反向代理服务来决定如何访问目标Web 服务器(或者是哪个Web 服务器), 这个过程对客户端是透明的.
  4. 反向代理服务会暴露公共的IP, 只要能上网,就可以访问,但是对于反向代理服务器管理的/代理的Web 服务器通常是在局域网内,不能直接访问,只能通过反向代理来访问.
  5. 我们可以将反向代理服务+反向代理服务代理的Web 服务器视为一个整体
  6. 反向代理会屏蔽内网服务器(也就是他代理的服务)信息, 并实现负载均衡访问

负载均衡

一句话:当客户端向反向代理服务器(比如Nginx)发出请求,如果Nginx 代理了多个WEB 服务器(集群),Nginx 会将请求/负载分发到不同的服务器,也就是负载均衡

示意图

Nginx【反向代理负载均衡动静分离】--上_第8张图片

动静分离

一句话:为了加快网站的解析速度,可以把动态资源和静态资源由不同的服务器来解析,降低单个服务器的压力

传统的项目资源部署

– 示意图
Nginx【反向代理负载均衡动静分离】--上_第9张图片

动静分离项目资源部署

– 示意图

Nginx【反向代理负载均衡动静分离】--上_第10张图片

Nginx 下载&安装&启动

注意安装这里就不详细讲解了网上有许多优秀的教程

这理里就主要说一下要点和容易犯的错误

启动Nginx 可能的错误和解决方案

  1. 解决nginx 启动报错nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No suchfile or directory)

Nginx【反向代理负载均衡动静分离】--上_第11张图片

Nginx【反向代理负载均衡动静分离】--上_第12张图片

在这里插入图片描述

配置防火墙,让Windows 访问Nginx

说明:默认情况下Windows 是不能访问Nginx , 因为防火墙是关闭80 端口的

具体配置

● 查看开放的端口号

firewall-cmd --list-all

Nginx【反向代理负载均衡动静分离】--上_第13张图片

● 设置开放的端口号

#firewall-cmd --add-service=http --permanent #增加了一个http 服务,理解
firewall-cmd --add-port=80/tcp --permanent

● 重启防火墙

firewall-cmd --reload

Nginx 命令行参数

指令说明

地址:https://nginx.org/en/docs/switches.html
Nginx【反向代理负载均衡动静分离】--上_第14张图片

使用演示

  1. 启动/usr/local/nginx/sbin/nginx -c nginx.conf
  2. 停止/usr/local/nginx/sbin/nginx -s stop
  3. 重新加载(不需要重启) /usr/local/nginx/sbin/nginx -s reload
  4. 查看版本/usr/local/nginx/sbin/nginx -v
  5. 查看版本、配置参数/usr/local/nginx/sbin/nginx -V

反向代理-快速入门

需求说明/图解

  1. 在浏览器输入www.hsp.com(windows), 可以访问到tomcat
  2. 使用Nginx 反向代理功能, 完成需求.

Nginx【反向代理负载均衡动静分离】--上_第15张图片

实现步骤

安装JDK , 在8 以上, 参考我Linux的javaee定制篇

安装步骤

  1. mkdir /opt/jdk
  2. 通过xftp6 上传到/opt/jdk 下
  3. cd /opt/jdk
  4. 解压tar -zxvf jdk-8u261-linux-x64.tar.gz
  1. mkdir /usr/local/java

  2. mv /opt/jdk/jdk1.8.0_261 /usr/local/java

  3. 配置环境变量的配置文件vim /etc/profile

  4. export JAVA_HOME=/usr/local/java/jdk1.8.0_261

    export PATH=$JAVA_HOME/bin:$PATH
    
  5. source /etc/profile [让新的环境变量生效]

测试是否安装成功

Nginx【反向代理负载均衡动静分离】--上_第16张图片

安装Tomcat

参考: 参考我Linux的javaee定制篇

步骤

1)上传安装文件,并解压缩到/opt/tomcat

2)进入解压目录/bin , 启动tomcat ./startup.sh

3)开放端口8080 , 回顾firewall-cmd

测试是否安装成功

在windows、Linux 下访问http://linuxip:8080

Nginx【反向代理负载均衡动静分离】--上_第17张图片

修改C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名
#127.0.0.1 www.mynews.com
127.0.0.1 localhost

修改安装目录\nginx.conf

Nginx【反向代理负载均衡动静分离】--上_第18张图片

小技巧: 如何查看nginx.conf 的配置错误

nginx -t #检测默认配置文件

在这里插入图片描述

nginx -t -c 配置文件#指定检测配置文件

在这里插入图片描述

完成测试

重启或者重新加载Nginx

windows 浏览器输入: http://www.自己设置的.com

Nginx【反向代理负载均衡动静分离】--上_第19张图片

注意事项和细节

Nginx 对外提供访问入口,充当反向代理服务器,Tomcat 的端口就无需对外暴露-测试一把

开启和关闭防火墙的端口

● 以8080 端口为例,关闭8080 端口

firewall-cmd --remove-port=8080/tcp --permanent
firewall-cmd --reload

● 以8080 端口为例,开放8080 端口

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

● 查看防火墙状态

firewall-cmd --list-all

反向代理配置-Location 实例

– 效果示意图

Nginx【反向代理负载均衡动静分离】--上_第20张图片

反向代理配置-思路分析/图解

Nginx【反向代理负载均衡动静分离】--上_第21张图片

Location 语法规则

解读1-location 语法规则

因为太长了单独发

解读2-nginx 的location 解析过程

参考: https://blog.huati365.com/89af5ae5a56d1b96
Nginx【反向代理负载均衡动静分离】--上_第22张图片

实现步骤

修改C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名

192.168.12.134 www.自己的.com

192.168.12.134 www.自己的.com

修改安装目录\nginx.conf

Nginx【反向代理负载均衡动静分离】--上_第23张图片

在Linux 的Tomcat 创建webapps\product\hi.html

product service linux tomcat

在windows 的Tomcat 创建webapps\member\hi.html

linux 防火墙打开10000 端口

保证linux 可以访问Windows Tomcat 【即:可以访问Windows 的8080 端口, 可暂时关闭windows 防火墙,测完恢复】

完成测试

  1. 确保启动Linux 下的Tomcat

  2. 确保启动Windows 下的Tomcat

  3. 重启或者重新加载Nginx

  4. windows 浏览器输入[注意带上端口]:

    http://www.hspmall.com:10000/product/hi.html

    http://www.hspmall.com:10000/member/hi.html

Nginx【反向代理负载均衡动静分离】--上_第24张图片

这里就演示这一种 还有很多不同的可以自行去玩一下

你可能感兴趣的:(分布式,微服务,nginx,负载均衡,运维)