linux 下 nginx的负载均衡
发布时间:2021-01-17 09:24:05 所属栏目:Nginx 来源:互联网
导读:nginx是如何实现负载均衡的,nginx的upstream目前支持以下几种方式的分配: 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、w
nginx是如何实现负载均衡的,nginx的upstream目前支持以下几种方式的分配: 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 2、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 3、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 4、url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 一、准备环境如下: 1、我们配置四个nginx的虚拟主机,分别如下: www.site.com 127.0.0.1:8081 127.0.0.1:8082 127.0.0.1:8083site1.conf的配置如下: server { #监听的端口号 listen 8081; #虚拟主机名 server_name 127.0.0.1; #编码 charset utf-8; #访问日志 access_log logs/site1.access.log combined; location / { #网站路径 root /data/wwwroot/site1; #默认首页文件 index index.html index.htm index.php; } #在http中加入fastcgi_intercept_errors on; #配置404信息 error_page 404 /404.html; #配置500信息 error_page 500 502 503 504 /50x.html; #缓存图片资源 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 15d; } #缓存js、css资源 location ~ .*.(js|css)$ { expires 1d; } #对php的支持 location ~ .php$ { root /data/wwwroot/site1; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }site2.conf和site3.conf的配置同site1.conf,只是端口、日志文件和目录地址需要修改。 2、三个站点下分别创建index.html,方便查看访问了哪个虚拟主机 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> 我是站点一 </body> </html>二、配置好上述三台虚拟主机后,我们需要在nginx.conf的http{}节点中设置upstream #注意这里的myserver,可自定义 upstream myserver { server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; }三、在需要负载的虚拟主机配置文件中添加 proxy_pass http://myserver;修改后的site.conf文件如下: server { #监听的端口号 listen 80; #虚拟主机名 server_name www.site.com; location / { #注意这里的myserver要与你upstream中的命名一致 proxy_pass http://myserver; proxy_redirect off; #注意,如果是本地反向代理并且端口不区分时(比如:都是用的80端口) #需要把下面这行注释,不然会产生死循环 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #后端服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }四、我们重启nginx,通过浏览器访问www.site.com。 我们刷新浏览器,可以看到,网站出现的内容,会随着你的刷新,轮询显示站点一,站点二,站点三。 五、upstream中的配置 upstream myserver { server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=2; server 127.0.0.1:8083 weight=3; }weight默认为1,weight越大,负载的权重就越大。 upstream myserver { server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 down; }down表示当前的server暂时不参与负载 upstream myserver { server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 backup; }backup其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 upstream myserver { server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 max_fails=3 fail_timeout=30s; }max_fails允许请求失败的次数默认为1,当超过最大次数时返回proxy_next_upstream 模块定义的错误 fail_timeout当max_fails 次失败后,暂停的时间。 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Gitlab:使用Passenger / Nginx运行Unicorn,Resque的问题
- php – Nginx – Rails中的WordPress博客使用mime类型的文本
- 代理 – 使用nginx http auth保护Jenkins,但回调网址除外
- nginx没有在端口81上响应
- ruby-on-rails-为什么SSL重定向不能与force_ssl和Nginx一起
- 如何在Amazon EC2 AMI实例上使用nginx一致地设置PHP-FPM 5.
- nginx – 根据同一vhost中访问的主机名自动选择SSL证书
- nginx – 我的www子域名收到了SSL_ERROR_BAD_CERT_DOMAIN
- 使用其他模块重新编译Nginx
- django-nginx fastcgi-未处理的异常(从Django 1.2.4升级到D
推荐文章
站长推荐
热点阅读