18 反向代理的配置和实例
更新时间:2020-02-06 18:42:01
构成我们学习最大障碍的是已知的东西,而不是未知的东西。 —— 贝尔纳

前言

我们在上一篇文章中介绍了代理的概念,包括什么是正向代理, 什么是反向代理。本文我们就在前面的基础之上学习一下如何配置反向代理。

其实反向代理一般情况下和负载均衡配合使用,我们会在后面介绍负载均衡

反向代理模块介绍

nginx反向代理功能主要是由ngx_http_proxy_module模块实现的。这个模块有很多指令,详细的指令可以参考Nginx文档
图片描述
工作中我们经常用到的只有几个,我们熟悉这些就行了,下面就是一些线上服务器的配置:
图片描述

proxy_pass 指令

其实proxy_pass的用法很多,这个指令可以把特定的请求反向代理到一个服务器组(这里牵涉到负载均衡,我们在后面的文章中会介绍),也可以代理到一个IP,一个URL等。
这个指令是ngx_http_proxy_module模块的核心指令,它实现了反向代理的功能。

我们这里只介绍这一个指令,通过这个指令,配合例子,我们就基本可以抓住反向代理的核心了。

实例

我们会使用一个非常非常简单的例子,这个例子主要是为了帮助大家进一步理解反向代理的含义,加深这个概念。

反向代理是Nginx非常重要的功能,我们无论怎么强调都不为过。

为了实现反向代理,我们需要在机器上面启动两个nginx进程,一个作为前端机(也即是接收客户端请求的服务器)。一个作为反向代理机,也即是实际完成工作的服务器。这也是我们实际工作中经常用到的模式。

首先,我们创建一个nginx_proxy.conf文件,作为反向代理机的配置文件。
图片描述

然后配置一个前端机
图片描述

然后启动两个nginx进程:
图片描述

我们查看nginx进程:
图片描述

我们分别打开前端机反向代理机的访问日志,然后请求
curl http://localhost/hello.html,如下:
图片描述
我们可以从日志中看到这个过程:
图片描述
其实从日志中我们可以看到,我们请求了前端机, 但是前端机把请求转发给了反向代理机,而后者才是真正处理请求的机器。

总结

我们在本文中通过大量的图片和一个实例,配和上一篇文章,让大家加深对反向代理的理解。
其实反向代理负载均衡是非常亲密的关系,大家在后面的学习中会深刻的理解到这一点。

}