- 作者:老汪软件技巧
- 发表时间:2024-10-15 00:01
- 浏览量:
❝
Nginx,一款功能强大的开源 Web 服务器,兼具代理服务器的角色,以其对 正向和反向代理 的支持而著称。正向代理巧妙地遮掩了客户端的真实 IP,使其成为访问受限资源、提升访问效率的理想选择。而反向代理则深藏服务端的详细信息,其在实现负载均衡、静态资源缓存以及增强系统安全性方面发挥着关键作用。 本文简析了 Nginx 配置文件的架构,从全局配置到 events 和 http 块的具体设置,为读者提供了一份参考的指南。同时,文章还展示了 Nginx 在 负载均衡 领域的应用,详细介绍了四种主流的负载均衡策略:轮询法、IP 哈希、加权轮询以及最少连接法,为读者在实际应用中选择合适的策略提供了参考。
正向代理
image
正向代理扮演着客户端与目标服务器之间的中介角色。在客户端发起对目标服务器的访问请求时,该请求首先抵达正向代理服务器。代理服务器接着将请求传递给目标服务器,并在接收到目标服务器的响应后,将其反馈给客户端。通过这种方式,正向代理有效地遮蔽了客户端的真实 IP,防止目标服务器直接识别或追踪到客户端的身份。
正向代理是客户端访问代理服务器去访问目标服务器,并且对目标服务器隐藏了客户端的真实信息(IP 等信息)
正向代理的主要用途包括:
1.访问被限制的资源:当某些资源受到网络限制或访问限制时,可以使用正向代理绕过这些限制来获取资源。
2.提高访问速度:代理服务器可以缓存经常请求的资源,从而提高客户端访问资源的速度。
3.突破防火墙:正向代理可以帮助绕过企业或国家防火墙的限制,访问被封锁的网站或资源。
反向代理
image
反向代理作为客户端与服务器端之间的中介,扮演着重要的角色。当客户端对反向代理服务器发出访问请求,该代理服务器依据预设的规则,将请求定向转发至后端服务器群中的某一台。随后,代理服务器捕获来自该后端服务器的响应,并将其传递回客户端。这一过程中,反向代理巧妙地掩盖了后端服务器的真实身份,导致客户端无法知晓其请求被具体哪一台服务器处理。
反向代理是指代理服务器接收客户端的请求,然后反向代理将客户端的请求分发给一个或多个目标服务器,最后将响应返回给客户端,对于客户端隐藏了真实的服务端信息。
反向代理的主要用途包括:
1.负载均衡:反向代理可以根据一定的算法将请求均匀地分发给后端的多台服务器,从而实现负载均衡,提高系统的并发处理能力和稳定性。
2.缓存静态资源:反向代理可以缓存经常请求的静态资源,减少后端服务器的负载,提高网站的访问速度。
3.安全性和可靠性:反向代理可以作为防火墙和安全设备,提供安全认证、访问控制、DDoS攻击防护等功能。
正向代理 VS 反向代理总结
代理服务器在网络通信中扮演着至关重要的角色,无论是正向代理还是反向代理,它们都作为信息传递的中介。
正向代理充当客户端与互联网目标服务器之间的桥梁,客户端的请求通过代理服务器转发,同时代理服务器也保护了客户端的隐私,隐藏了其真实的 IP 地址,使得目标服务器无法识别访问来源。
反向代理则作为客户端与后端服务器集群之间的纽带,接收客户端的请求并根据预设规则将其分配给后端的某一台服务器,然后从该服务器获取响应并返回给客户端。在这个过程中,反向代理确保了服务端的匿名性,客户端无法知晓其请求被处理的具体服务器。
这两种代理的主要区别在于它们在请求流程中的位置和作用。在正向代理中,代理服务器与客户端站在同一战线,帮助客户端访问特定的网络资源。而在反向代理中,代理服务器与后端服务器站在同一阵线,协助服务端响应客户端的请求。
配置文件解析nginx 配置文件的组成部分
#user nobody; 是用来指定 Nginx 进程运行的用户和用户组的配置项。 在 Linux 系统中,各个进程需要以某个用户的身份来运行,以限制权限并提高安全性
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx 配置文件有三部分组成
第一部分 全局块第二部分 events 块第三部分 http 块全局块
比如上面第一行配置的:
worker_processes 1;
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。
events 块
events {
worker_connections 1024;
}
events 块涉及的指令 主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work_process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work_process 可以同时支持的最大网络连接数等。
上述例子就表示每个 work process 支持的最大连接数为 1024. 这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。