前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用nginx做代理并实现负载均衡的方法

使用nginx做代理并实现负载均衡的方法

作者头像
93年的老男孩
发布2019-12-18 17:59:20
7330
发布2019-12-18 17:59:20
举报

使用nginx做代理实现负载均衡主要在于server模块:

使用nginx做代理的详细情况如下:

server {

#对80端口做转发

listen 80;

#访问的server_name为www.lzcit.com

server_name www.lzcit.com;

#转发路径为www.lzcit.com

location / {

#转发时附带host否则默认为ip访问,被代理的服务器多站点配置无效

proxy_set_header host $host;

#因为做了转发,去掉这一句服务器端无法获取到客户端的真实ip,做设置后,真实的客户端ip可以通过$_SERVER['HTTP_X_REWRITI_URL']获取;

proxy_set_header x-rewriti-url $remote_addr;

#同上,若需要显示真是的服务器端ip则需要添加本句

proxy_set_header server-addr $server_addr;

#本句指明被代理的服务器ip为192.168.0.2,且使用的协议为http协议

proxy_pass http://192.168.0.2;

}

}

使用nginx做代理并实现负载均衡的方法

#设置被代理的服务器为一组服务器的话(必须放到server外边)

upstream proxy_svrs {

#根据访问ip的hash结果做分配,否则每次访问时被代理的服务器不通,session会出现无效情况;

ip_hash;

#被代理的服务器组不做其他设置的话,默认为轮询

server 192.168.0.2;

server 192.168.0.3;

#设置被代理的服务器不参与负载

server 192.168.0.4 down;

#根据weight的值指定轮询比率,weight的值越大越分配的比率越多

server 192.168.0.5 weight=1;

server 192.168.0.6 weight=2;

#当其他机器非backup机器down或者繁忙的时候才会请求本机器

server 192.168.0.7 backup;

#根据url的hash结果做分配,当被代理服务器专门用来做缓存的时候比较有效

hash $request_uri;

hash_method crc32;

#根据被代理的服务器的响应时间来做分配

fair;

}

server {

#同上

listen 80;

#同上

server_name www.lzcit.com;

#同上

location / {

#同上

proxy_set_header host $host;

#同上

proxy_set_header x-rewriti-url $remote_addr;

#同上

proxy_set_header server-addr $server_addr;

#指明被代理的服务器是一组名为proxy_svrs的服务器组;注:http必须写到这里不可以写到proxy_svrs内

proxy_pass http://proxy_svrs;

}

}

注明:分配方式之间是互斥的,所以在真实环境中,需要根据实际的使用情况做好负载设置。

笔者在这里给个简单的例子:

#设置被代理的服务器为一组服务器的话(必须放到server外边)

upstream proxy_svrs {

#根据访问ip的hash结果做分配,否则每次访问时被代理的服务器不通,session会出现无效情况;

ip_hash;

#被代理的服务器组不做其他设置的话,默认为轮询

server 192.168.0.2;

server 192.168.0.3;

#设置被代理的服务器不参与负载

server 192.168.0.4 down;

#根据weight的值指定轮询比率,weight的值越大越分配的比率越多

server 192.168.0.5 weight=1;

server 192.168.0.6 weight=2;

#当其他机器非backup机器down或者繁忙的时候才会请求本机器

server 192.168.0.7 backup;

}

server {

#对80端口做转发

listen 80;

#访问的server_name为www.lzcit.com

server_name www.lzcit.com;

#同上

location / {

#转发时附带host否则默认为ip访问,被代理的服务器多站点配置无效

proxy_set_header host $host;

#因为做了转发,去掉这一句服务器端无法获取到客户端的真实ip,做设置后,真实的客户端ip可以通过$_SERVER['HTTP_X_REWRITI_URL']获取;

proxy_set_header x-rewriti-url $remote_addr;

#同上,若需要显示真是的服务器端ip则需要添加本句

proxy_set_header server-addr $server_addr;

#指明被代理的服务器是一组名为proxy_svrs的服务器组;注:http必须写到这里不可以写到proxy_svrs内

proxy_pass http://proxy_svrs;

#websocket支持

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

}

}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档