第四阶段笔记 Jingtao_day07

day 07 反向代理Nginx

此文档是根据上课流程编写,更多细节及图片请参见刘老师的专栏

江哥的专栏

cgb2008-京淘day07

一. 实现文件上传
  1. 为属性赋值

    i. 编辑pro配置文件

    # 配置本地磁盘根目录
    image.fileDir=E:/jt_img
    
    # 配置图片服务器地址
    image.urlPath=http://image.jt.com

    ii. 编辑FileServiceImpl

    @Service
    @PropertySource(value = "classpath:/properties/image.properties",encoding = "UTF-8")  //将配置文件导入容器
    public class FileServiceImpl implements FileService{
    
        @Value("${image.fileDir}")
        private String fileDir;// = "E:/jt_img";
        @Value("${image.urlPath}")
        private String url;  //设定域名地址
    }

-- 至此,京淘后端的代码搭建完成 --

二. 反向代理/正向代理
  1. 反向代理特点

    i. 反向代理服务器是位于用户和目标服务器之间的一个代理服务器;

    ii. 用户访问反向服务器就可以获取到目标服务器的资源,即相当于访问了目标服务器,用户不知道真实的服务器是谁;

    iii. 反向代理服务器保护了服务器端的信息,称之为服务器端代理。

  2. 业务分析

    用户访问:http://image.jt.com/a.jpg --> 反向代理服务器

    服务器:D:/jt_img/a.jpg

    i. 反向代理服务器[配置文件将image.jt.com映射为D:/jt_img]

    ii. 用户由于某种原因无法访问目标服务器,完成指定功能

  3. 正向代理特点

    i. 位于客户端和原始服务器之间的服务器;

    ii. 用户向代理发送一个请求,指定目标服务器,用户非常明确目标服务器到底是谁。代理服务器将从目标服务器中获取的内容返回给用户。服务器不清楚到底是被谁访问的;

    iii. 保护了用户的信息,称之为客户端代理。

总结:

​ 1) 反向代理是服务器端代理,只要用户访问服务器,就是反向代理。实现业务调用

​ 2) 正向代理是客户端代理,只要用户上网,就使用正向代理。实现网络通信

网穿工具:夜神模拟器/花生壳/xxx

三. Nginx软件负载均衡服务器
  1. 下载Nginx-windows版安装包

    参见官网《nginx: download

  2. 特点:

    1) 占用内存少,tomcat负责整个项目的运行-200M,nginx负责请求的转发-不到2M;

    2) 并发能力强 5万/秒 实际2-4万/秒

  3. 安装与使用

    ​ nginx启动会生成两个进程项,其中的一个主进程提供反向代理服务,另一个守护进程防止主进程意外关闭。在关闭时应该先关闭守护进程,内存占用多的是主进程。

    F5 硬件负载均衡服务器

  4. Ngnix命令

    ​ 工作目录说明:要求在nginx.exe所在的根目录下执行

    i. 启动命令

    start ngnix

    ii. 重名命令

    ngnix -s reload

    iii. 关闭命令

    ngnix -s stop
  5. Nginx反向代理的原理

    i. 入门案例说明

    http://localhost:80

    ii. 配置项:一个协议http

    #一个服务,一个server
    server {
           #监听的端口号 一般不改
        listen       80;
        #监听的域名 localhost:80
        server_name  localhost;#charset koi8-r;
    
        #access_log  logs/host.access.log  main;
        #开启反向代理的策略 / 代表全部的请求
        location / {
            #root关键字 代理具体的目录
            root   html;
            #index关键字 代表默认的页面
            index  index.html index.htm;
        }
    }
  6. 实现图片的回显

    i. 业务需求

    ​ url地址:http://image.jt.com/2020/

    ​ 本地磁盘地址:E:\jt_image\

    ii. 配置Nginx

    #1.配置图片代理
    server{
        listen 80;
        server_name image.jt.com;location / {
        root E:/jt_img;
    }

    iii. 配置HOSTS文件

    作用:实现本地域名与IP地址的映射

    位置:C:\Windows\System32\drivers\etc

    # 京淘
    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
    127.0.0.1    localhost
  7. 实现域名代理

    i. 业务说明

    ​ 要求用户输入http://manage.jt.com 访问localhost:8091服务器

    ii. 实现方式:利用反向代理方式

    #2.配置后端服务器 manage.jt.com
        server{
            listen 80;
            server_name manager.jt.com;    location / {
            #发起url请求地址
            proxy_pass http://localhost:8091;
        }
    }
四. Nginx实现tomcat集群发布
  1. 集群搭建原理

    ​ 使用三台tomcat服务器处理请求。

  2. 动态展现端口号

    ​ 编写PortController

    @RestController
    public class PortController {
        @Value("${server.port}")
        private int port;
    
        @RequestMapping("/getPort")
        public String getPort(){
            return "当前访问的端口号:"+port;
        }
    } 
  3. tomcat项目打包

    i. 说明:由于需要准备3台tomcat服务器,端口号依次是8081/8082/8083

    ii. 准备三台tomcat服务器

    ​ clean --> compile --> install

  4. 负载均衡配置

    i. 轮询策略:根据配置文件的顺序,依次访问服务器。

    #2.配置后端服务器 manage.jt.com
        server{
            listen 80;
            server_name manager.jt.com;    location / {
            #发起url请求地址
            #proxy_pass http://localhost:8091;
            proxy_pass http://jtwindows; 
        }
    }
    # 配置tomcat服务器集群
    upstream jtwindows{
        server 127.0.0.1:8091;
        server 127.0.0.1:8082;
        server 127.0.0.1:8083;
    }

    ii. 权重策略:让性能更优的服务器处理更多的请求。

    # 配置tomcat服务器集群
    upstream jtwindows{
        server 127.0.0.1:8091 weight=6;
        server 127.0.0.1:8082 weight=3;
        server 127.0.0.1:8083 weight=1;
    }

    iii. IP哈希策略:需要将用户与某台服务器进行绑定

    ​ 使用场景:在线客服,在线考试系统

    ​ 原理:IP地址 --> hash(ip)%3 [O(1)]--> 0,1,2

    # 配置tomcat服务器集群
    upstream jtwindows{
        ip_hash;
        server 127.0.0.1:8091 weight=6;
        server 127.0.0.1:8082 weight=3;
        server 127.0.0.1:8083 weight=1;
    }
  5. Nginx高级属性

    i. down属性

    ​ 如果服务器宕机,则可以通过down属性进行标识,被标识的服务器则不会为用户提供访问

    server 127.0.0.1:8091 weight=6 down;

    ii. backup属性

    ​ 备用机的设定。一般条件下备用机不干活,但当主机遇忙或宕机时才会访问备用机

    server 127.0.0.1:8083 weight=1 backup;

    iii. tomcat服务器高可用

    ​ max_fails:设定最大的失败次数,如果超过最大次数则标识为down

    ​ fail_timeout:失效的超时时间:60s

    server 127.0.0.1:8082 weight=3 max_fails=1 fail_timeout=60s;
五. 虚拟机介绍

​ 参见《Linux.doc》CGB-2008讲义\13_第四阶段-京淘新版本资料\京淘新版本资料\课上资料-配-文件\3-文件上传-nginx负载均衡\3-Linux命令

  1. 网络模式说明

    i. 桥接模式

    ​ 虚拟机直接接入局域网,会独占IP,可与本机通过局域网通信。需要物理设备的支持。

    ii. NAT模式

    ​ 相当于在网络环境中开辟一块全新的网络空间,只有主机能够访问,其他人不能通过ip访问。

  2. 修改虚拟机mac地址 00:50:56:2C:25:B6
  3. 配置IP地址 192.168.126.0
  4. 检查Windows/Linux IP

    C:\Users\Jacques>ping 192.168.126.129
    
    正在 Ping 192.168.126.129 具有 32 字节的数据:
    来自 192.168.126.129 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.126.129 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.126.129 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.126.129 的回复: 字节=32 时间<1ms TTL=64
    
    192.168.126.129 的 Ping 统计信息:
        数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 0ms,最长 = 0ms,平均 = 0ms
作业:安装远程连接工具

你可能感兴趣的:(java,intellij-idea)