Nginx反向代理

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强。

Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡。本篇博客我们会先介绍 Nginx 的反向代理,当然在了解反向代理之前,我们需要先知道什么是代理以及什么是正向代理。

1、代理

在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。

  可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以自己去找房源,但是这太花费时间精力了,而且房屋质量检测以及房屋过户等一系列手续也都得我们去办,再说现在这个社会,等我们找到房源,说不定房子都已经涨价了,那么怎么办呢?最简单快捷的方法就是找二手房中介公司(为什么?别人那里房源多啊),于是我们就委托中介公司来给我找合适的房子,以及后续的质量检测过户等操作,我们只需要选好自己想要的房子,然后交钱就行了。

  代理简单来说,就是如果我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做。那么这个例子里面的中介公司就是给我们做代理服务的,我们委托中介公司帮我们找房子。

  Nginx 主要能够代理如下几种协议,其中用到的最多的就是做Http代理服务器   

2.正向代理

  弄清楚什么是代理了,那么什么又是正向代理呢?

  这里我再举一个例子:大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗(这不废话,Google就是美国的),如果我们电脑的对外公网 IP 地址能变成美国的 IP 地址,那不就可以访问 Google了。你很聪明,VPN 就是这样产生的。我们在访问 Google 时,先连上 VPN 服务器将我们的 IP 地址变成美国的 IP 地址,然后就可以顺利的访问了。

  这里的 VPN 就是做正向代理的。正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。

  PS:这里介绍一下什么是 VPN,VPN 通俗的讲就是一种中转服务,当我们电脑接入 VPN 后,我们对外 IP 地址就会变成 VPN 服务器的 公网 IP,我们请求或接受任何数据都会通过这个VPN 服务器然后传入到我们本机。这样做有什么好处呢?比如 VPN 游戏加速方面的原理,我们要玩网通区的 LOL,但是本机接入的是电信的宽带,玩网通区的会比较卡,这时候就利用 VPN 将电信网络变为网通网络,然后在玩网通区的LOL就不会卡了(注意:VPN 是不能增加带宽的,不要以为不卡了是因为网速提升了)。

  可能听到这里大家还是很抽象,没关系,和下面的反向代理对比理解就简单了。   

3.反向代理

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

  反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

  下面我们通过两张图来对比正向代理和方向代理:
  
  
  理解这两种代理的关键在于代理服务器所代理的对象是什么,正向代理代理的是客户端,我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器,作为客户端的我们是无法感知到服务器的真实存在的。

  总结起来还是一句话:正向代理代理客户端,反向代理代理服务器

4.Nginx 反向代理

首先:说一下准备工作,最少两个tomcat,另外设置两个域名并解析到本地ip(因为nginx是直接配置域名)

4.1分别设置两个tomcat的/conf/server.xml中的端口号,如下



tomcat1端口号分别设置为: 8001

tomcat2端口号分别设置为:8002

4.2添加测试内容

分别删除目录webapps下所有文件,新建一个文件夹ROOT,并在该目录下新建index.html

内容可以设置为:这里是8001端口。(另一个:这里是8002端口。)

4.3启动两个Tomcat

在这里会出线一个问题不能同时启动两个tomcat

4.4访问下面两个路径

127.0.0.1/8001
NLKMGD.png

127.0.0.1/8002
NLKKPO.png
能够访问到对应的index.html文件就好了。

4.4设置两个域名并解析

修改hosts文件,目的是为了设置2个域名, tomcat1.com和 tomcat2.com并且解析到本地ip:127.0.0.1

路径:C:\Windows\System32\drivers\etc
NLMMT0.png

打开hosts文件,加上(如果修改后无法保存,可以把hosts文件复制到桌面,添加后再替换)

127.0.0.1 123.com
127.0.0.1 1234.com

NLMlkV.png

4.5测试域名解析是否能够访问

输入:123.com/test

NLM2nA.png
输入:1234.com/test
NLMcXd.png

4.6配置反向代理

server {
        listen       80; 
        server_name  123.com;

        location  / {
        proxy_pass   http://127.0.0.1:8001/test;
        index  index.html index.htm;
        }
    }
server {
        listen       80;
        server_name  1234.com;

        location / {
        proxy_pass   http://127.0.0.1:8002/test;
        index  index.html index.htm;
        }
    }

4.7测试是否配置成功

NLM66H.png
NLMy1e.png

若是测试失败查看端口是否被占用
cmd中输入:netstat -an|find “0:80”


   转载规则


《Nginx反向代理》 小乐 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
nginx的使用 nginx的使用
1.Nginx是什么?1.1 nginx是一款高性能的http服务器/反向代理服务器一家电子邮件的(IMAP/POP3)代理服务器。有实验表明Nginx能够支持5W条链接的并发,并且对CPU,内存等资源消耗非常低,运行非常稳定,基本不用重
2020-07-12
下一篇 
在Ubuntu16.04中安装hexo 在Ubuntu16.04中安装hexo
在Ubuntu16.04中安装hexo出现一系列的问题,总结一下安装hexo的步骤; 首先安装noejs,Ubuntu源中的nodejs时旧版本,所以需要在安装后更新nodejs; > sudo apt-get install no
2020-05-12
  目录