25
2021
06
17:00:49

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

使用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";

}

}




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/1786.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: