分析Nginx是如何实现反向代理和负载均衡

nginx介绍

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

特点: 占有内存少 不超过2M ,并发能力强 3-5万次/秒

注意事项: 在安装Nginx过程中, Nginx的安装目录 不要装到C盘,并且路径不要有中文 空格 及系统目录.
安装完成后安装目录中有nginx.exe文件, 点击启动就可以了. 这里会弹一个命令窗口,然后立即就会消失,这不是程序启动的问题;
当我们可以观察资源管理器, 就会发现nginx已经启动了
在这里插入图片描述
我们发现有两个nginx.exe正在运行: 内存占用大的是主进程. 内存占用小的是守护进程;
当我们需要手动关闭nginx时,需要先关闭守护进程,之后再关闭主进程;

Nginx 启动后,可以访问网址: localhost:80 将会给我们一个欢迎界面
在这里插入图片描述
关于nginx 操作命令
命令执行位置: 执行命令时需要在nginx的根目录中执行.之后地址栏中 键入 cmd进入dos命令创建中

启动命令 start nginx
重启命令 nginx -s reload
关闭命令 nginx -s stop

Nginx实现反向代理:

什么是反向代理<重点>

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
特点:

  1. 反向代理服务器位于用户和目标服务器之间.
  2. 反向代理服务器就相当于目标服务器.(用户以为代理服务器就是真实服务器)
  3. 用户通过反向代理服务器获取资源 而不是直接访问真实服务器.
  4. 用户不清楚真实的服务器到底是谁.
  5. 反向代理是服务器端代理.保护真实服务器信息.

特征: 用户不清楚真实目标服务器是谁.
在这里插入图片描述
Nginx反向代理配置

http {
	#http协议内,可以有多个服务 每个服务就是一个server
    server {
    	# 监听用户访问的端口   默认是80端口
        listen       80;   
        # server_name 服务名称  浏览器的访问域名
        server_name  localhost;
		#配置反向代理的实现  / 拦截所有的用户请求
        location / {
        	# root代表关键字   代表反向代理的目录
            root   html;
            # index 代表默认的访问页面
            index  index.html index.htm;
        }
      }
   }
反向代理使用说明:

1.url地址: http://image.jt.com/2020/08/07/xxxx.png
2.本地磁盘地址:D:\JTSOFT\images/2020/08/07/xxxxpng
目的:通过域名访问真实的磁盘地址.
可以利用nginx的反向代理完成配置.
编辑Nginx配置文件

# 配置图片服务器
	server {
		listen 80;
		server_name image.jt.com;

		##通过网址转向指定的目录  注意/的写法
		location / {
		
			root D:/JT-SOFT/images;
		}
	}

修改HOSTS文件
说明: 每个操作系统针对开发人员,在本地都会有一个hosts文件可以编辑.
windows: C:\Windows\System32\drivers\etc
在这里插入图片描述
利用工具软件管理HOSTS文件:

京淘配置

#左侧写IP地址 右侧写域名 中间使用空格分隔 配置内容
127.0.0.1 image.jt.com
127.0.0.1 manager.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com
在这里插入图片描述

nginx域名代理
要求:用户通过http://manager.jt.com的方式 访问localhost:8091的服务器.
利用反向代理的方式实现该功能.
配置nginx

# 商品管理服务器  监听的是用户 manager.jt.com:80  映射的是url地址
	server {
		listen   80;
		server_name  manager.jt.com;

		#进行反向代理
		location / {
			#映射的url请求网址.
			proxy_pass http://localhost:8091;
		}  
	}

访问效果
在这里插入图片描述

Nginx负载均衡原理

在这里插入图片描述
Nginx 集群搭建
说明: 要求启动3台服务器,运行jt-manager项目 端口号分别为8081/8082/8083, 通过/getPort请求,获取当前服务器端口号信息并且字符串返回.

动态获取当前服务器端口号
目的:为了能够在以后的负载均衡访问时看到自己访问的服务器到底是谁.

package com.jt.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PortController {

    //考点:动态复制操作
    @Value("${server.port}")
    private Integer port;

    @RequestMapping("/getPort")
    public String getPort(){

        return "当前访问的端口号:"+port;
    }
}

发布3台tomcat服务器
步骤:1.将项目打包 将项目先clean- build----install
在这里插入图片描述
步骤2.准备部署路径,之后将war包上传
在这里插入图片描述
3.利用命令运行服务器
在这里插入图片描述
4.访问测试
在这里插入图片描述

负载均衡的策略:

一:轮询策略:
说明: 根据nginx的配置文件,依次访问服务器.

# 商品管理服务器  监听的是用户 manager.jt.com:80  映射的是url地址
	server {
		listen   80;
		server_name  manager.jt.com;

		#进行反向代理
		location / {
			#映射的url请求网址.
			#proxy_pass http://localhost:8091;
			proxy_pass  http://jtWindows;
		}  
	}

	#配置集群  1.默认方式   轮询策略
	upstream jtWindows {

		server localhost:8081;
		server localhost:8082;
		server localhost:8083;
	}

二:权重策略:
说明: 性能越高的服务器,则承担的压力也就越高.

#配置集群  1.默认方式   轮询策略   2.权重策略 
	upstream jtWindows {

		server localhost:8081  weight=6;
		server localhost:8082  weight=3;
		server localhost:8083  weight=1;
	}

三:IPHASH策略
需求: 有时在访问时可能会固定的访问某台服务器. 将用户与服务器进行绑定. 以后用户只能访问该服务器.
算法: IPHASH算法.

#配置集群  1.默认方式   轮询策略   2.权重策略   3.IPhash策略
	upstream jtWindows {
		ip_hash;
		server localhost:8081  weight=6;
		server localhost:8082  weight=3;
		server localhost:8083  weight=1;
	}

在这里插入图片描述
弊端:

  1. 用户与服务器进行绑定,当服务器宕机时则可能影响用户的使用.
  2. 由于访问是通过算数计算的结果,可能导致严重的负载不均的现象.

Nginx 高级属性

一:down属性
说明:nginx在不做任何的配置时,无法感知服务器是否正常运行.所有会频繁的访问故障机.
解决方案: 可以利用down属性 来标识故障机

#配置集群  1.默认方式   轮询策略   2.权重策略   3.IPhash策略
	upstream jtWindows {
		#ip_hash;    server localhost:8081  weight=6;
		server localhost:8081 down;
		server localhost:8082 ;
		server localhost:8083 ;
	}

二:备用机策略
说明:正常情况下一般服务器部署时需要准备几台服务器当做备用.正常的情况下该服务器不参与工作.只有当主机遇忙时/或者宕机时.该服务器才会工作.

#配置集群  1.默认方式   轮询策略   2.权重策略   3.IPhash策略
	upstream jtWindows {
		#ip_hash;    server localhost:8081  weight=6;
		server localhost:8081 down;
		server localhost:8082 down;
		server localhost:8083 backup;
	}

三:nginx高可用配置
说明:当tomcat服务器宕机时,可以通过如下的配置,实现服务器的自动的切换.无需人为的干预.

配置信息:
fail_timeout=60s; 设定超时时间(定义一个周期)
max_fails=1 设定最大的访问失败次数.

#配置集群  1.默认方式   轮询策略   2.权重策略   3.IPhash策略
	upstream jtWindows {
		#ip_hash;    server localhost:8081  weight=6;
		server localhost:8081 max_fails=1 fail_timeout=60s;
		server localhost:8082 max_fails=1 fail_timeout=60s;
		server localhost:8083 max_fails=1 fail_timeout=60s;
	}

配置说明:
如果nginx访问某台服务器时,如果该服务器访问失败,失败的次数达到最大失败次数时.在60秒之内,nginx不会再次访问故障机.直到下一个周期.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值