Web架构 | 反向代理 | Nginx配置反向代理
反向代理介绍和Nginx如何配置反向代理
一、导读
二、反向代理的优点
三、架构图
四、反向代理服务器的工作原理
五、Nginx配置反向代理
一、导读
反向代理,指的是将客户端请求转发
到内部网络
的WEB服务器上,并从内部服务器得到的结果返回给客户端的代理服务器。
对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。
二、反向代理的优点
-
1、提高了内部服务器的安全
-
2、加快了对内部服务器的访问速度
代理服务器与内部WEB服务器通过内网访问,提高访问速度。
-
3、节约了有限的IP资源
-
4、负载均衡
内部WEB服务器可以有多台,分摊请求压力。
三、架构图
四、反向代理服务器的工作原理
反向代理有两种用途
1、隐藏后端服务器信息,保障数据安全
客户端访问的时候与反向代理服务器通过外网连接,反向代理服务器则通过内外与内部WEB服务器连接。
这时候,客户端感知不到后端WEB服务器的存在,只能通过反向代理服务器访问相关资源,保证数据的安全性
架构图:
2、作为负载均衡调度机,均衡后端服务器访问压力
后端WEB服务器可以部署多台,采用一定的轮询算法来承接客户端的请求。
这种架构可以缓解单台服务器的压力,同时具备一定的扩展性。
五、Nginx配置反向代理
反向代理的软件有很多,比如LVS
,Haproxy
等,还有就是Nginx也可以作为反向代理服务器使用。
通过Nginx的proxy_pass
模块,即可实现反向代理功能。
5.1 Nginx负载均衡机制
-
最少连接,下一个请求分配给具有最少数量活动连接的服务器。 -
ip-hash,哈希函数用于确定下一个请求(基于客户端的IP地址)应选择哪个服务器(相同IP 的发送到同一个服务器,解决 session 问题)。 -
轮询,向应用服务器的请求以循环方式分发。
默认采用轮询算法
基础配置参考
http {
upstream IamProxy {
# 根据配置算法进行轮询
least_conn; # 表示采取 最少连接数 的负载均衡机制
ip_hash; # ip_hash 的负载均衡机制
server aaa.www.com;
server bbb.www.com;
server ccc.www.com;
}
}
server {
listen 80;
server_name www.client.com; # 客户端访问域名
access_log logs/www.client.com.access.log main;
error_log logs/www.client.com.error.log;
root /www/html/www.client.com/;
index index.html index.htm index.php;
location / {
proxy_pass http://IamProxy; # 请求转发到 IamProxy
# 相关代理设置项
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
}
}
Enjoy Nginx