Nginx反向代理
什么是反向代理
正向代理(图左):如vpn
- 代理会隐藏客户端的真实信息 (IP、端口),以自己的身份代替客户端在互联网上发起请求,并将返回结果转发给客户端。
- 代理可以保护客户端、代理可以帮助客户端访问自己无法到达的网络。
- 客户端需要将特定请求或全部请求主动配置为请求代理服务器。
反向代理(图右):
- 反向代理会隐藏服务端真实信息 (IP、端口),把自己作为服务端暴露在互联网中,通过把请求转发给真实服务器处理拿到结果后再返回,来对外提供服务。
- 反向代理客户有效保护服务端,隔离网络环境,并进行多个真实服务器的负载均衡。
- 服务端需要将自己配置到反向代理中,然后将反向代理暴露在公网。
常见的Nginx反向代理应用
-
负载均衡:Nginx可以在多个后端服务器之间进行负载均衡,将请求按照特定的规则分发到后端服务器,以提高系统的性能和可靠性。
-
缓存加速:Nginx可以作为缓存服务器,将频繁被请求的静态资源缓存在内存中,加速网站的访问速度,减轻后端服务器的压力。
-
SSL终端代理:Nginx可以作为SSL终端代理,在客户端和后端服务器之间建立SSL加密连接,保护传输的数据安全性。
-
虚拟主机代理:Nginx可以根据请求的域名或者URL路径,将请求分发到不同的后端服务器上,实现虚拟主机的代理。
-
WebSockets代理:Nginx可以代理WebSocket协议的请求,实现实时通信功能。
-
反向代理缓存动态内容:Nginx可以根据后端服务器返回的响应结果进行缓存,包括动态内容的缓存,以减轻后端服务器的压力。
官网参数说明
简易的反向代理
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location ^~ /face/ {
proxy_pass http://192.168.0.1:80; #被代理的服务器地址
proxy_redirect default; #是否使用默认端口
#转发时具体的转发参数设置
proxy_set header Host $http; #转发时设置HTTP头部
proxy_set_header X-Real-IP $remote #转发时设置客户端真实IP
proxy_set_header X-Forwarded-For $proxy_add; #转发时设置代理服务器IP
#计时器用于维护服务器运行良好状态
proxy_connect_imeout 30s #设置代理连接超时时间(5秒)。当连接到后端服务器的时间超过此设定值时,将会中止连接。
proxy_send_imeout 60s#设置向后端服务器发送请求的超时时间(60秒)。当与后端服务器建立连接后,发送请求的时间超过此设定值时,将会中止连接。
proxy_read_imeout 60s #设置从后端服务器读取响应的超时时间(60秒)。当从后端服务器接收响应的时间超过设置的值时,将会终止连接。
#缓冲区(buffer)功能设置。存储HTTP头部数据
proxy buffering on: # on| off 是否开启buffer功能。
proxy_buffer_size 32k #设置一个特殊的buffer大小的。
proxy_buffers 4 128k; #设置存储被代理服务器上的数据所占用的buffer的个数和每个buffer的大小
proxy_busy_buffers_size 256k;#在所有的buffer里,我们需要规定一部分buffer把自己存的数据传给A,这部分buffer就叫做busy_buffer。
proxy_max_temp_file_size 256k; #临时文件的最大大小由
}
}
server
{
...
}
... #http全局块
}