upstream
Nginx支持负载均衡,可以很方便的帮助我们进行水平扩容,upstream就是nginx中的负载均衡模块
- 当客户端发送请求时,会先到Nginx,然后Nginx会将请求分发到后台不同的服务器上。
- 如果后台的服务器群中有一个宕机了,那么Nginx会自动忽略这台服务器,不会将请求再次分发到这台服务器上。
- 如果有新加入的服务器,修改配置后,Nginx也会将请求分发到这台服务器上。
用法
参照Nginx中文文档,可以得到简单的配置方案如下。
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}
server {
location / {
proxy_pass http://backend;
}
}
实战遇到的问题
当使用不同域名不同云厂商进行负载均衡策略时,Post等类型请求被转发为了Get,导致服务异常。原因是域名使用了https策略,并自动重写了http请求。文章来源:https://www.toymoban.com/news/detail-790674.html
解决方案:在写配置时添加Https及端口。文章来源地址https://www.toymoban.com/news/detail-790674.html
upstream testUpstream{
ip_hash;
server www.xxx.com:443 weight=5;
server www.xxx.com:443 weight=3 max_fails=1 fail_timeout=30s;
}
server {
listen 80;
server_name www.xxx.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl http2;
server_name www.xxx.com;
#core
location /testUpstream/api/ {
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-NginX-Proxy true;
proxy_pass https://testUpstream/;
}
}
到了这里,关于使用Nginx的upstream实现负载均衡,并配置https,避免Post请求类型转发后变为Get的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!