通过 Nginx 实现反向代理和负载均衡的核心是配置 nginx.conf 文件。
实现反向代理
通过 Nginx 将客户端请求转发到指定的后端服务器,隐藏真正的服务地址,保障一定的服务安全性。
假设我们现在要将 80 端口监听的请求,转发到 8090 端口的服务:
打开配置文件(命令:sudo vi /etc/nginx/nginx.conf),找到 80 端口监听的位置,将
基础配置
server {
listen 80; # 监听 80 端口
server_name example.com; # 域名或IP
location / {
proxy_pass http://myapp; # 转发到后端服务
proxy_set_header Host $host; # 传递请求头
proxy_set_header X-Real-IP $remote_addr;
}
}
# 定义后端服务地址
upstream myapp {
server 127.0.0.1:8090; # 后端服务地址
}
实现负载均衡
在高并发的场景下,Nginx 可以根据服务器的负载情况,将请求分发到多个应用服务器上,提高系统的可用性和性能。
Nginx 的负载均衡策略:
1.轮询策略,将请求轮流转发给可用的应用服务器,是默认策略。
2.加权轮询策略,可以按照权重给可用服务器分发请求,比如有两个可用的后端服务器,Nginx 权重配比设为 3:2,则100个请求,有60个转发到服务器A,40个转发到服务器B。
配置demo(加权轮询策略):
# 定义服务器组
upstream activity_servers {
server 192.168.2.10:8090 weight=3; # 高性能新机器
server 192.168.2.11:8090 weight=2; # 老机器
}
server {
listen 80;
server_name example.com;
# 请求转发
location / {
proxy_pass http://activity_servers;
}
}
评论区