INFO
Categories

反向代理的本地部署

什么是正向代理?

正向代理代理的是客户端
正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端

1.1.2 正向代理的作用

为在防火墙内的局域网客户端提供访问Internet的途径
可以使用缓冲特性减少网络使用率
使用代理后会隐藏真实的IP地址
访问受地理位置限制的网络(最常用for me)

什么是反向代理

反向代理代理的是服务端(由外到内)

反向代理:(reverse proxy),指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式 客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址

反向代理可实现的功能

负载均衡:Nginx可以将传入的请求分发给多个后端服务器,以平衡服务器的负载,提高系统性能和可靠性。
缓存功能:Nginx可以缓存静态文件或动态页面,减轻服务器的负载,提高响应速度。
动静分离:将动态生成的内容(如 PHP、Python、Node.js 等)和静态资源(如 HTML、CSS、JavaScript、图片、视频等)分别存放在不同的服务器或路径上。(利用负载均衡和location实现)
多站点代理:Nginx可以代理多个域名或虚拟主机,将不同的请求转发到不同的后端服务器上,实现多个站点的共享端口。

作用

请参见NGINX篇的作用,本地部署的话估计起不到隐藏真实服务器的作用,所以唯一的作用就是。。。把端口给隐藏了

看是否需要安装acme自动更新证书?

 wget -O-  https://get.acme.sh | sh

一、Nginx 反向代理基础
反向代理原理
在网络架构中,代理服务器是位于客户端和服务端之间的中间服务器。正向代理代理的对象是客户端,隐藏客户端真实身份,如 VPN;而反向代理代理的对象是服务端,对服务端负责,隐藏服务端真实身份。Nginx 作为反向代理服务器时,客户端向 Nginx 发送请求,Nginx 根据配置将请求转发到后端的真实服务器,真实服务器处理请求后将响应返回给 Nginx,再由 Nginx 返回给客户端,整个过程客户端并不知道真正处理请求的服务器是谁。
Nginx 反向代理优势
1.高性能与稳定性:Nginx 采用事件驱动的异步非阻塞模型,能高效处理大量并发请求,在高并发场景下表现出色,稳定性强,确保远程访问的流畅性。例如,在电商大促活动期间,大量用户同时访问网站,Nginx 可以快速响应并分发请求,保障网站正常运行。
2.丰富功能集:具备负载均衡、安全防护、流量控制、缓存等多种功能,能满足远程访问中的各种需求。比如通过负载均衡功能,将请求均匀分配到多个后端服务器,提高系统整体性能;利用缓存功能,减少后端服务器压力,加快访问速度。
3.配置灵活简单:配置文件采用简单的文本格式,易于理解和修改。用户可以根据实际需求,灵活配置 Nginx 的各项功能,如设置反向代理规则、负载均衡算法、缓存策略等。

 反向代理可实现的功能

反向代理的主要作用是提供负载均衡和高可用性:
负载均衡:Nginx可以将传入的请求分发给多个后端服务器,以平衡服务器的负载,提高系统性能和可靠性。
缓存功能:Nginx可以缓存静态文件或动态页面,减轻服务器的负载,提高响应速度。
动静分离:将动态生成的内容(如 PHP、Python、Node.js 等)和静态资源(如 HTML、CSS、JavaScript、图片、视频等)分别存放在不同的服务器或路径上。(利用负载均衡和location实现)
多站点代理:Nginx可以代理多个域名或虚拟主机,将不同的请求转发到不同的后端服务器上,实现多个站点的共享端口。

因为nginx无法处理动态资源,所以要动静分离。
所需配置

编辑子配置文件

#访问动态资源
 location /api {
     proxy_pass http://192.164.65.101;
}
#访问静态资源
location  /static {
    proxy_pass http://192.164.65.103;
}

实现反向代理客户端IP透传
反向代理客户端IP透传是指在使用反向代理服务器时,将客户端的真实IP地址传递给后端服务器。

这可以通过一些特定的 如X-Forwarded-For 等HTTP 头字段来实现 头字段。

当请求经过反向代理服务器时,代理服务器会将客户端的真实IP地址添加到 XFF 头字段中,然后转发给后端服务器。

server{
        listen 192.164.65.100:80;
        server_name  www.pc.com;
        root    /apps/nginx/html/pc;
     location  / {
        proxy_pass http://192.164.65.101;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
将客户端的真实IP地址添加到X-Forwarded-For头字段中
}

负载均衡

Nginx 可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能。

NGINX的负载均衡原理是基于反向代理和事件驱动的机制。

当客户端发送请求时,NGINX作为反向代理服务器接收请求,并根据配置的负载均衡算法将请求转发到后端的多个服务器上,实现负载均衡。

作用

  • • 将用户请求分发到多台后端服务器上,避免单台服务器负载过高。
  • • 通过轮询、权重、最少连接等策略分发请求,确保高可用性。

场景

  • • 电商大促期间,用户请求激增,单台服务器可能会崩溃。通过反向代理,Nginx 将请求分发到 3 台服务器,减少单点故障。

最简单配置,轮询(Round Robin),每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。

upstream backend {
server192.168.0.101:1337;
server192.168.0.102:1337;
server192.168.0.103:1337;
}

server {
listen80;
location / {
proxy_pass http://backend;
}
}

3.5.2.2 轮询权值(Weighted Round Robin)
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。


#示例
upstream bakend {  
    server 192.164.65.1 weight=10;  
    server 192.164.65.2 weight=20;  
}

常见配置参数

server address [parameters];
#配置一个后端web服务器,配置在upstream内,至少要有一个server服务器配置。
#server支持的parameters如下:
​
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
​
max_conns=number  #给当前后端server设置最大活动链接数,默认为0表示没有限制
​
max_fails=number  #后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测
​
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒
​
sorry server   #自己不能转自己
down    #标记为down状态
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx
backup  #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器
​
upstream backend {
    server backend1.example.com;
    server backend2.example.com backup;
    server backend3.example.com;
}