反向代理是一种服务器,在这种设置中,代理服务器接收客户端的请求,并将这些请求转发给一个或多个后端服务器(例如应用服务器、数据库服务器等)。然后,后端服务器处理这些请求并将响应返回给代理服务器,代理服务器再将响应传递给客户端。
backend 的上游服务器组,这里包含了两个后端服务器 backend1.example.com 和 backend2.example.com。www.example.com 的请求。backend。Host 字段、客户端的真实 IP 地址 (X-Real-IP),以及代理链 (X-Forwarded-For) 等。Nginx 支持多种负载均衡策略,如:
ngx_http_proxy_module: #将客户端的请求以http协议转发至指定服务器进行处理 7层代理
ngx_http_upstream_module #用于定义为proxy_pass,fastcgi_pass,uwsgi_pass等指令引用的后端服务器分组 负载均衡
ngx_stream_proxy_module:#将客户端的请求以tcp协议转发至指定服务器处理 4层代理
ngx_http_fastcgi_module:#将客户端对php的请求以fastcgi协议转发至指定服务器助理
ngx_http_uwsgi_module: #将客户端对Python的请求以uwsgi协议转发至指定服务器处理
Module ngx_http_proxy_module官方文档
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_exceptproxy_pass;
#用来设置将客户端请求转发给的后端服务器的主机,可以是主机名(将转发至后端服务做为主机头首部)、IP地址:端口的方式
#也可以代理到预先设置的主机群组,需要模块ngx_http_upstream_module支持
在192.168.240.10上编写子配置文件
yum安装子配置文件路径/usr/local/nginx/conf.d/(conf.d需要创建)

在另一台主机192.168.240.11上安装http服务,新建一个网页

在真机上访问192.168.240.10

Nginx 动静分离是一种常见的性能优化技术,它将处理静态资源和动态请求的责任分配给不同的服务器或者服务进程,以提高网站的性能和吞吐量。下面是一个简要介绍:
静态资源和动态请求: 在网站中,通常有两种类型的请求:静态资源请求和动态请求。静态资源包括图片、CSS 文件、JavaScript 文件等,它们的内容在请求时不会改变。而动态请求则是由服务器生成的动态内容,如 PHP、Python、Java 等后端语言生成的页面。
传统架构的问题: 在传统的架构中,静态资源和动态请求都由同一个服务器处理。但是这样会导致服务器负载过高,因为动态请求通常需要更多的计算和数据库访问。此外,每个请求都会占用服务器的线程或进程,限制了并发处理能力。
动静分离原理: 动静分离通过将静态资源交给专门的服务器或者服务进程来处理,从而减轻动态请求对主服务器的压力。通常,Nginx 作为反向代理服务器,可以配置多个反向代理规则,将静态资源的请求转发给专门的静态资源服务器,而动态请求则继续由主服务器处理。
优势和好处: 动静分离的优势在于提高了网站的性能和可扩展性。静态资源可以被缓存,减少了服务器的访问次数,加快了页面加载速度;而动态请求则可以由专门的后端服务器处理,提高了并发处理能力和响应速度。
示例:
1.在代理服务器192.168.240.10上编写子配置文件
vim /usr/local/nginx/conf.d/djfl.conf

2.在192.168.240.11和192.168.240.13真实服务器上安装nginx服务,制作网页
访问192.168.240.10
在/usr/share/nginx/html下


- curl 192.168.240.10/api -L
- curl 192.168.240.10/static -L

Nginx负载均衡通过将客户端请求分发到多个后端服务器(upstream servers),从而提高系统的响应速度和可靠性。
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
在上述示例中,upstream块定义了一个名为backend的服务器组,其中包含三个后端服务器。proxy_pass指令用于将请求转发到该服务器组。
Nginx支持多种负载均衡算法,包括:
轮询(Round Robin):默认算法,按顺序将请求分配给每个后端服务器。
加权轮询(Weighted Round Robin):可以根据服务器的权重来分配请求,例如:
- upstream backend {
- server backend1.example.com weight=3;
- server backend2.example.com weight=1;
- }
最少连接数(Least Connections):将请求分配给当前处理连接数最少的服务器。
- upstream backend {
- least_conn;
- server backend1.example.com;
- server backend2.example.com;
- }
IP哈希(IP Hash):根据客户端IP地址来分配请求,使同一个IP地址的请求总是被分配到同一台后端服务器。
- upstream backend {
- ip_hash;
- server backend1.example.com;
- server backend2.example.com;
- }
Nginx Plus(商业版)提供高级的健康检查功能,但开源版本也可以通过一些第三方模块或自定义脚本来实现基本的健康检查。例如,可以使用proxy_next_upstream指令处理后端服务器故障:
- http {
- upstream backend {
- server backend1.example.com;
- server backend2.example.com;
- }
- server { listen 80;
- location / {
- proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_pass http://backend;
- }
- }
- }
Nginx支持会话保持(Session Persistence),确保用户的请求被分配到同一台后端服务器。可以通过sticky模块实现,该模块需要第三方插件支持:
- upstream backend {
- sticky;
- server backend1.example.com;
- server backend2.example.com;
- }