正向代理:
简单来说就是你想访问目标服务器的权限,但是没有权限。这时候代理服务器有权限访问服务器,并且你有访问代理服务器的权限,这时候你就可以通过访问代理服务器,代理服务器访问真实服务器,把内容给你呈现出来。
**反向代理:**反向代理跟代理正好相反(需要说明的是,现在基本所有的大型网站的页面都是用了反向代理),客户端发送的请求,想要访问 server 服务器上的内容。发送的内容被发送到代理服务器上,这个代理服务器再把请求发送到自己设置好的内部服务器上,而用户真实想获得的内容就在这些设置好的服务器上。
一般代理指代理的客户端,反向代理是代理的服务器。
反向代理的用途和好处
- 安全性:正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这个给网络安全代理了极大的威胁。因此,我们必须把服务器保护起来,使用反向代理客户端用户只能通过外来网来访问代理服务器,并且用户并不知道自己访问的真实服务器是那一台,可以很好的提供安全保护。
- 功能性:反向代理的主要用途是为多个服务器提供负债均衡、缓存等功能。负载均衡就是一个网站的内容被部署在若干服务器上,可以把这些机子看成一个集群,那 Nginx 可以将接收到的客户端请求“均匀地”分配到这个集群中所有的服务器上,从而实现服务器压力的平均分配,也叫负载均衡。
最简单的反向代理
现在我们要访问http://nginx2.jspang.com然后反向代理到jspang.com这个网站。我们直接到etc/nginx/con.d/8001.conf进行修改。
修改后的配置文件如下:
server{
listen 80;
server_name nginx2.jspang.com;
location / {
proxy_pass http://jspang.com;
}
}
一般我们反向代理的都是一个 IP,但是我这里代理了一个域名也是可以的。其实这时候我们反向代理就算成功了,我们可以在浏览器中打开http://nginx2.jspang.com来测试一下。(视频中有详细的演示)
其它反向代理指令
反向代理还有些常用的指令,我在这里给大家列出:
- proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
- proxy_connect_timeout:配置 Nginx 与后端代理服务器尝试建立连接的超时时间。
- proxy_read_timeout : 配置 Nginx 向后端服务器组发出 read 请求后,等待相应的超时时间。
- proxy_send_timeout:配置 Nginx 向后端服务器组发出 write 请求后,等待相应的超时时间。
- proxy_redirect :用于修改后端服务器返回的响应头中的 Location 和 Refresh。