使用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";
}
}
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/1786.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~