反向代理的汇总与实现

1.反向代理介绍

反向代理

反向代理:也可以叫做服务端代理 ,简单的将就是客户端发起请求 ,会经过代理服务请 ,最终执行服务器。 但是我们访问别人家的信息时一般都会看到不是服务端真实的访问路径,而是一种虚拟的路径 ,其原因就是代 理服务器在里面充当媒介,通过代理服务器来接受响应的数据。

访问流程: 客户端 ------代理服务器(对于客户端在这相当于最终服务器,原因:域名发生了变化)—服务器。
目的:保护最终服务器url安全。
反向代理的汇总与实现_第1张图片

正向代理
正向代理:也可以叫做客户端代理。客户端可以直接或间接查询到所要找到的地址。

举例说明:大家都知道访问外网需要一个服务器去转接(也就是我们所说的“狗急跳墙”,为什么这么说呢?防止审核不通过)。 我们要查找一些国外或者一些不正当的网址时,思考我们为什么还是可以访问到的呢?

 普通的访问流程: 客户端--- 校验 (网关) ---服务端(去除反向代理情况)。
 特殊访问不到: 客户端-----校验(网关 :此时会终止访问)---- 服务器。
 特殊访问到的情况: 客户端-----校验(网关 )---- 服务器(正规/大家都明白)----服务器。

目的:保护客户端安全。

二者区别
区别: 若您浏览上述信息区别就显而易见了。
都可以监听用户协议
反向代理 : 请求获取无法获取最终服务器 (不认识最终的服务器),保护服务器信息。
正向代理: 请求获取可以获取最终的服务器,但不会查到客户端访问地址,保护客户端信息。

**使用的插件 **
反向代理使用的插件: nginx 官网
nginx反向代理下载之后是一个压缩包,解压即可使用。

通过找到解压根目录:
访问方法 1: 直接双击打开  nginx.exe   。(但关闭,重启比较麻烦)
访问方法2: 通过boss命令符启动 : 
               步骤一: 在路径框中选中路径 换成  cmd;  可以对其进行访问。
               步骤二:执行命令:  (不要加 分号)
                                         启动命令:start nginx
                                         重启命令:nginx -s reload
                                         关闭命令:nginx -s stop

反向代理的汇总与实现_第2张图片

校验:

   启动方面:
        启动时,会发生闪退,或者无反应(主要根据电脑配置有关)。
        在任务管理器中查找启动应用程序。(若多次点击则会开启多个程序应用)
        介绍:开启一个进程 则会出现 2个进程 :主进程 和 守护进程。(主进程内存大 ,守护进程稍微小那么一丢丢 )
         在任务器中关闭流程:  先关闭守护进程,负责将会无法关闭。
         目的:防止无意关闭进程。            
    运行方面: 
          nginx反向代理默认端口是:80.   

反向代理的汇总与实现_第3张图片
错误解决建议:
通过cmd 查询端口 是否占用 : 所有端口: netstat -ano -a
端口是否占用: netstat -ano | findstr"80"

反向代理的汇总与实现_第4张图片

2. 命令及策略

nginx文件配置
路径: 打开 nginx.conf 进行编辑。
反向代理的汇总与实现_第5张图片
格式介绍
里面的操作使用C语言写的 ,所使用的注解使用 # 进行注释:
http 中可以添加多个服务器 :既不同的server 我们编写的在 server里面


http{
#服务器默认会有
server {
#端口号 
 listen  80;
 #服务器名称 
 server_name  localhost ;
 #相对路径
 location / {
 #添加访问目录
root   html;
 index  index.html index.htm;
}
 error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
}

自己填写方法/格式

http{
#商品管理服务器代理
#监听的客户 使用80的端口 看用户端口
server{
    listen 80;
    #查看自己定义  反向代理name  名称要与host 保持一致  匿名访问 网址
    server_name  manager.jt.com;
    location / {
#发起http请求 看使用端口
#proxy_pass  http://localhost:8080;
#尽可以有一个 
proxy_pass  http://jtWindows;    #此处使用了负载均衡 策略
}
}

#发布多台服务器
upstream  jtWindows{
server localhost:8080 ;
server localhost:8081 ;
server localhost:8082 ;

}
}

负载均衡
配置多台实现负载均衡,减轻服务器的压力

轮询策略
根据配置文件,依次访问服务器。
一般默认为 轮训策略。

权重策略
根据服务器性能决定 ,性能越高则承担的压力越大。

upstream jtWindows {
server localhost :8080 weihgt=6;
server localhost:8081  weight=3;
#也可以 将localhost直接写成172.0.0.1 (目的主要看访问)
}

IPHASH
它是一种算法。
用户可能或固定访问服务器,需要与用户进行绑定操作

upstream jtWindows {
#添加
ip_hash;
server localhost :8080 weihgt=6;
server localhost:8081  weight=3;
#也可以 将localhost直接写成172.0.0.1 (目的主要看访问)
}

3.nginx高级属性

down属性
nginx在不做任何配置事务,无法感知服务器是否可以正常运行,数据会频繁的访问故障机
利用down可以标识故障机

upstream jtWindows {
#在上面添加down属性
		server localhost:8081 down;
		server localhost:8082 ;
		server localhost:8083 ;
	}

备用机配置策略
用作:正常情况下该服务器不进行参与工作,只有当主机遇忙时、出现故障,该服务器才会工作。

upstream jtWindows {
#down 在这标识故障机 ,启用备用机 添加backup
		server localhost:8081 down; 
		server localhost:8082 down;
		server localhost:8083 backup;
	}

高可用配置
通过配置当服务器出现异常则会自动切换
若拂去其访问失败,达到最大限定次数在60s内不会再次访问。

#配置信息
#1.max_fails=1   设定最大访问次数  
#2.fail_timeout=60s; 设定超时时间同一周期

	upstream jtWindows {
		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;
	}

4. 虚拟URL host文件配置

host 文件介绍
路径:C:\Windows\System32\drivers\etc 固定格式:此属于计算机系统
host文件:host 文件扩展名系统文件,可以使用记事本等工具打开。作用 : 将一些常用的网址域名与IP地址建立关联 ,用于浏览时输入一个需要登陆的网址是系统会首先从host文件中寻找,一旦找到,系统会立即打开对应网页,若没有找到,则系统将网址提交到DNA域名解析器进行IP地址的解析。

代码实现(图片回显)

创建图片存储路径

创建访问虚拟路径

*反向代理配置 如上nignx部分

host文件配置

#格式
# 注释与C语言一致
# 格式 : IP  空格  网址域名
# 网址域名 要与 .java文件中定义域名一致 和 nginx 定义name 要保持一致  
# JT电商环境
#图片回显
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

访问虚拟路径

反向代理的汇总与实现_第6张图片

集群的搭建

 nginx代理配置

反向代理的汇总与实现_第7张图片

配置host文件

在这里插入图片描述

发布多台服务器
发布注意事项 :
多台发布只需要对 server port : 8080 修改为其他端口 执行以下操作即可:
1.将项目先进行clean 。
2.查看执行文件.xml 文件 (特别是 build 依赖注入) 运行查看是否可以正常运行。
3.通过 install 进行打包 发布 。
4.可以通过boss 命令符。在登陆路径或虚拟路径进行访问 。(目的就是为了通过虚拟路径,实现负载均衡)。

你可能感兴趣的:(知识分享,java)