Nginx【反向代理负载均衡动静分离】–上
先看2 个实际需求,引出Nginx
需求1: 访问不同微服务
示意图
需求2: 轮询访问服务
示意图
解决方案: Nginx
-
反向代理
-
负载均衡
-
动静分离
高可用集群
- Nginx 在分布式微服务架构的位置
基本介绍
Nginx 是什么? 能干什么?
-
是什么:Nginx (“engine x”) 是一个高性能的HTTP 和反向代理WEB 服务器
-
能干什么:反向代理负载均衡动静分离
-
牛逼之处:高性能,高负载有报告表明能支持高达50,000 个并发连接数
-
详细说明:https://lnmp.org/nginx.html
官方资料
-
官网:https://nginx.org/
-
使用文档:https://nginx.org/en/docs/
Nginx 核心功能
正向代理
一句话:如果我们要访问www.google.com 但是直接访问不到,则需要通过代理服务器来访问,这种代理服务就称为正向代理
图解
- 我们知道www.google.com , 但是访问不到
- 所以使用代理服务器帮助我们(即客户端)来上网, 注意帮助的对象是客户端, 这种代理,我们称为正向代理.
- 正向代理同时也隐藏了客户端信息.
- 再次说明,正向代理帮助的是客户端, 因此可以把客户端+正向代理服务, 视为一个整体
反向代理
一句话:客户端将请求发送到代理服务器,由代理服务器去选择目标服务器获取数据后,返回给客户端,这种代理方式为反向代理
一图胜千言
图解
- 项目设计者, 不希望客户端直接访问目标Web 服务器(比如目标Web 服务器是集群, 如果直接访问就会提供多个公网IP), 而是希望提供一个统一的访问IP, 这个是理解反向代理的前提,即为什么要反向代理.
- 反向代理帮助的对象是目标Web 服务器
- 当客户端请求达到反向代理服务后,由反向代理服务来决定如何访问目标Web 服务器(或者是哪个Web 服务器), 这个过程对客户端是透明的.
- 反向代理服务会暴露公共的IP, 只要能上网,就可以访问,但是对于反向代理服务器管理的/代理的Web 服务器通常是在局域网内,不能直接访问,只能通过反向代理来访问.
- 我们可以将反向代理服务+反向代理服务代理的Web 服务器视为一个整体
- 反向代理会屏蔽内网服务器(也就是他代理的服务)信息, 并实现负载均衡访问
负载均衡
一句话:当客户端向反向代理服务器(比如Nginx)发出请求,如果Nginx 代理了多个WEB 服务器(集群),Nginx 会将请求/负载分发到不同的服务器,也就是负载均衡
示意图
动静分离
一句话:为了加快网站的解析速度,可以把动态资源和静态资源由不同的服务器来解析,降低单个服务器的压力
传统的项目资源部署
– 示意图
动静分离项目资源部署
– 示意图
Nginx 下载&安装&启动
注意安装这里就不详细讲解了网上有许多优秀的教程
这理里就主要说一下要点和容易犯的错误
启动Nginx 可能的错误和解决方案
- 解决nginx 启动报错nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No suchfile or directory)
配置防火墙,让Windows 访问Nginx
说明:默认情况下Windows 是不能访问Nginx , 因为防火墙是关闭80 端口的
具体配置
● 查看开放的端口号
firewall-cmd --list-all
● 设置开放的端口号
#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
使用演示
- 启动/usr/local/nginx/sbin/nginx -c nginx.conf
- 停止/usr/local/nginx/sbin/nginx -s stop
- 重新加载(不需要重启) /usr/local/nginx/sbin/nginx -s reload
- 查看版本/usr/local/nginx/sbin/nginx -v
- 查看版本、配置参数/usr/local/nginx/sbin/nginx -V
反向代理-快速入门
需求说明/图解
- 在浏览器输入www.hsp.com(windows), 可以访问到tomcat
- 使用Nginx 反向代理功能, 完成需求.
实现步骤
安装JDK , 在8 以上, 参考我Linux的javaee定制篇
安装步骤
- mkdir /opt/jdk
- 通过xftp6 上传到/opt/jdk 下
- cd /opt/jdk
- 解压tar -zxvf jdk-8u261-linux-x64.tar.gz
-
mkdir /usr/local/java
-
mv /opt/jdk/jdk1.8.0_261 /usr/local/java
-
配置环境变量的配置文件vim /etc/profile
-
export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH
-
source /etc/profile [让新的环境变量生效]
测试是否安装成功
安装Tomcat
参考: 参考我Linux的javaee定制篇
步骤
1)上传安装文件,并解压缩到/opt/tomcat
2)进入解压目录/bin , 启动tomcat ./startup.sh
3)开放端口8080 , 回顾firewall-cmd
测试是否安装成功
在windows、Linux 下访问http://linuxip:8080
修改C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名
#127.0.0.1 www.mynews.com
127.0.0.1 localhost
修改安装目录\nginx.conf
小技巧: 如何查看nginx.conf 的配置错误
nginx -t #检测默认配置文件
nginx -t -c 配置文件#指定检测配置文件
完成测试
重启或者重新加载Nginx
windows 浏览器输入: http://www.自己设置的.com
注意事项和细节
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 实例
– 效果示意图
反向代理配置-思路分析/图解
Location 语法规则
解读1-location 语法规则
因为太长了单独发
解读2-nginx 的location 解析过程
参考: https://blog.huati365.com/89af5ae5a56d1b96
实现步骤
修改C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名
192.168.12.134 www.自己的.com
192.168.12.134 www.自己的.com
修改安装目录\nginx.conf
在Linux 的Tomcat 创建webapps\product\hi.html
<h1>product service linux tomcat </h1>
在windows 的Tomcat 创建webapps\member\hi.html
linux 防火墙打开10000 端口
保证linux 可以访问Windows Tomcat 【即:可以访问Windows 的8080 端口, 可暂时关闭windows 防火墙,测完恢复】
完成测试
-
确保启动Linux 下的Tomcat
-
确保启动Windows 下的Tomcat
-
重启或者重新加载Nginx
-
windows 浏览器输入[注意带上端口]:
http://www.hspmall.com:10000/product/hi.html
http://www.hspmall.com:10000/member/hi.html
文章来源:https://www.toymoban.com/news/detail-480272.html
这里就演示这一种 还有很多不同的可以自行去玩一下文章来源地址https://www.toymoban.com/news/detail-480272.html
到了这里,关于Nginx【反向代理负载均衡动静分离】--上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!