117人参与 • 2025-04-22 • Mysql
随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担 。 对服务器升级费用十分高昂(f5、radware),甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(load balance)。
nginx负载均衡就是一种是通过软件来进行解决的,基于linux系统并且开源的负载均衡策略.

负载均衡有多种算法:

upstream test-server{
server 47.106.98.90:80 weight=1;
server 47.93.240.141:80 weight=2;
}
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://test-server;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr; //获取转发 客户端ip
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_redirect default;
}
}这段是nginx调度服务器上 nginx.conf里的设置
nginx的负载均衡主要就是以上代码。 它放在http区块里
test-server 是自定义的命名,可以自己自定。
意思是:
1. 当用户访问 www.test.com时 , 该访问会根据权重 随机分配到47.106.98.90 或 47.93.240.141 中,端口指定80
2. 这里用了权重的算法
重启nginx,第一次访问http://www.test.com如图所示


在我们10次的刷新访问中,有3次是跳转到90这个服务器中,基本符合权重的算法
我们把2号服务器(47.93.240.141)停掉

我们刷新下页面 ,可以看到无论怎么刷新 , 都是只有1号服务器

① ==图片问题==
可以单独建立图片服务器 或 7牛云的 图片服务器 ,就是对象存储oss
upstream test-server{
server 47.106.98.99:80 weight=1;
}
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://test-server;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr; //获取转发 客户端ip
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_redirect default;
}
}这样就能保护 47.106.98.99 的真实ip 不暴露 , 真正暴露的是这个堡垒机的ip 。 (比如 47.100.100.100)
域名设置方面把 域名解析到 47.100.100.100 .
server {
listen 443 ssl;
server_name www.test.com;
ssl_certificate /usr/local/wap.pem;
ssl_certificate_key /usr/local/wap.key;
ssl_protocols tlsv1.2;
ssl_ciphers high:!anull:!md5;
location / {
limit_req zone=mylimit burst=50 nodelay;
proxy_pass https://192.168.1.62;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-proto https;
proxy_redirect default;
}
}转发 https ,需要证书 ,划下重点
ssl_certificate /usr/local/wap.pem; ssl_certificate_key /usr/local/wap.key;
server {
listen 80;
server_name ai.abc.com;
location / {
proxy_ssl_server_name on;
proxy_ssl_name api.openai.com;
proxy_ssl_verify off;
proxy_pass https://api.openai.com;
proxy_set_header host api.openai.com;
proxy_set_header accept-encoding '';
}
}以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论