Nginx的正向代理和反向代理

Nginx

1. nginx正向/方向代理

1.1nginx反向代理

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

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

#http协议内,可以有多个服务,每个服务就是server

 server {
#监听用户访问的端口  默认是80端口

        listen       80;
server_name 服务名称 浏览器访问的域名
        server_name  localhost;

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

#配置反向代理的实现 /拦截所有用户的请求
        location / {

#root 代表关键字  代表反向代理的目录
            root   html;

#index代表默认访问的页面
            index  index.html index.htm;
        }

1.2 正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
特点:
1.代理服务器位于用户和服务器之间
2.用户发起请求之前已经清楚的知道谁的目标服务器.
3.用户通过代理服务器到指定的目标服务器获取资源.
4.正向代理保护的是客户端信息**,是客户端代理**

2 NGINX

nginx介绍:

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点: 占有内存少 不超过2M ,并发能力强 3-5万次/秒

2.1负载均衡原理

在这里插入图片描述

2.2Nginx集群搭建

说明:要求启动三台服务器,运行jt项目,端口号分别问8091/8092/8093,通过get/post请求,获取当前服务器并且字符串返回

2.2.1 动态获取当前服务器端口号

目的:为了能够在以后的负载均衡访问时

@RestController
public class PortController {
    @Value("${server.port}")
    private Integer port;
    @RequestMapping("/getPort")
    public String getPort(){
        return "当前访问的端口是:"+port;
    }
}

2.2.3轮询策略

#配置商品服务器

	server {
		listen 80;
			server_name manager.jt.com;
		##通过网址转向指定的目录
		location / {
			#proxy_pass http://localhost:8091;
			proxy_pass http://jtWindows;
		}
	}
#配置集群 配置负载均衡
upstream jtWindows{
		server localhost:8081;
		server localhost:8082;
		server localhost:8083;
	}

2.2.4权重策略

说明:
#配置集群 配置负载均衡 1.默认方式 轮询策略 2.权重策略 加属性weight

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

2.2.5IPHASH策略

#配置集群 配置负载均衡 1.默认方式 轮询策略 1.权重策略 加属性weight 3.IPhash策略

upstream jtWindows{
		ip_hash;
		server localhost:8081 weight=6;
		server localhost:8082 weight=3;
		server localhost:8083 weight=1;
	}

弊端:

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

2.3 Nginx高级属性

2.3.1 down属性

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

upstream jtWindows{
		#ip_hash;
		server localhost:8081 down;
		server localhost:8082 down;
		server localhost:8083 down;
	}

2.3.2 备用机策略 backup

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

upstream jtWindows{
		#ip_hash;
		server localhost:8081 down;
		server localhost:8082 down;
		server localhost:8083 backup;
	}

2.3.3 nginx高可用配置

说明:说明:当tomcat服务器宕机时,可以通过如下的配置,实现服务器的自动的切换.无需人为的干预.配置信息:
fail_timeout=60s;设定一个超时时间(定义一个周期)
max_fails=1 ;设定最大的失败访问次数
#配置集群 配置负载均衡 1.默认方式 轮询策略 1.权重策略 加属性weight 3.IPhash策略

upstream jtWindows{
		#ip_hash;
		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不会再次访问故障机.直到下一个周期.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值