Nginx

Nginx反向代理

1.什么是正向代理(针对客户端)

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
特点:
1.正向代理介于用户与目标服务器之间.
2.用户非常清楚的知道自己访问的远程资源到底是谁.
3.一般采用正向代理时 都是为了实现网络的通信.
如下图
在这里插入图片描述
举个例子:在生活中我们都是直接把正向代理称作代理,称为代理就行了,正向两个字就去掉了,那么这个代理也很好理解,举个例子,比如说现在在教室里边,各位同学上不了网,只有老师的那台机器可以上网,那么现在学生们又想去访问外网要怎么半呢,那么老师这个机器就可以作为一个代理服务器,只需要在学生电脑上去配置这个代理服务器的IP地址接可以了。

配好了之后,将来学生在浏览器里输入对应的网址,其实呢,就是把这个请求发给了代理服务器,然后再由代理服务器去上网,上完网之后,请求的资源再通过代理服务器返回给各位学生,这样就能够实现局域网内可以来连接互联网这种请求,那么其实正向代理代理的就是客户端.

2.反向代理(针对服务端)

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

特点:

  1. 反向代理服务器 介于用户与目标服务器之间 (3个组成部分)
  2. 用户以为反向代理服务器就是目标服务器.
  3. 用户不清楚真是的目标服务器地址.
    如下图
    在这里插入图片描述

可以看到这个反向代理这个图刚好和代理那个图是相反的,那么反向代理其实就是,比如现在呢我有远程,想要去访问我的Tomcat的网站,比如说我想通过网络访问我部署在Linux系统中Tomcat这些网站,我直接访问也是可以的。

但是直接访问有这么两个问题,第一个问题就是,直接访问的话,如果访问量太大,就一台Tomcat的话,那么这样并发就太低了,所以我们希望搭建一个Tomcat的集群,那么搭完Tomcat的集群之后呢,我直接是去访问的话,我咋知道是访问1还是2还是3呢,所以我们做一个代理服务器,我所以的请求都打到,或者说都访问这个代理服务器,然后再由这个代理服务器给我分发这些请求到这些Tomcat1或者2或者3,这就是反向代理。

那么还有第二个原因,如果我通过互联网直接访问我服务器的一些资源的话,可能会不安全,所以呢如果用了反向代理服务器,我所有的资源请求都打到反向代理服务器上,然后呢,我可以在这个中间加上一个防火墙,或者压根把整个做成内网的,或者说局域网的,外网根本都访问不了,那么这样做就会显得更加安全一些,所以反向代理服务器代理的就是服务器端.

3.配置反向代理

3.1安装nginx

1.http://nginx.org/en/download.html 官网下载
2.上传安装包到/usr/local/src目录下
3.解压Nginx安装包 指令:tar -xvf nginx…(nginx压缩包的名字)
4.进入./configure目录下,依次执行make,make install指令
5.进入nginx/sbin目录中执行如下指令(看个人需求)
启动:./nginx
重启:./nginx -s reload(有更新操作执行)
关闭:./nginx -s stop(一般不执行)
6.修改nginx配置文件(实现图片反向代理,实现tomcat负载均衡)

#配置图片代理服务器  http://域名:端口号
	server {
		listen 80;
		server_name 域名;

		location / {
			#root  D:/JT-SOFT/images;
			root  /usr/local/src/images;
		}	
	}
	server{
		listen  80;
		server_name 图片域名;

		location / {
			#代理真实服务器地址
			#proxy_pass http://localhost:8091;
			#映射到集群
			proxy_pass  http://jtLinux;
		}
	}

	#配置tomcat服务器集群  1.默认 轮询策略  2.权重策略  3.ip_hash策略
	upstream jtWindows {
		#ip_hash;     down 标识宕机     backup 备用机
		#max_fails=1  		表示最大的失败次数
		#fail_timeout=60s	如果访问不通,则在60秒内,不会再次访问故障机
		server 127.0.0.1:8081 max_fails=1 fail_timeout=60s;
		server 127.0.0.1:8082 max_fails=1 fail_timeout=60s;
		server 127.0.0.1:8083 max_fails=1 fail_timeout=60s;
	}
	
	upstream jtLinux {
		server 192.168.126.129:8081;
		server 192.168.126.129:8082;
		server 192.168.126.129:8083;
	}

7.修改hosts文件(由于没有购买域名,所以只能通过修改hosts文件实现域名和本机的映射,有钱也可以自己买)
添加如下配置

192.168.126.129(本机地址)    域名
192.168.126.129(本机地址)   图片域名

127.0.0.1   www.xxx.com
127.0.0.1   localhost

解释:

用户现在在浏览器输入了hosts文件中配置的域名,其实他不知道自己访问的是nginx还是tomcat.但我们自己知道用户访问了nginx,nginx通过server_name配置,找到对应的Tomcat,完事之后,将资源返回给nginx,nginx返回给用户,这就是反向代理的一个过程.
总而言之,在请求的过程中正向代理和反向代理是同时存在的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值