美文网首页
nginx反向代理实现负载均衡

nginx反向代理实现负载均衡

作者: c26 | 来源:发表于2015-04-13 13:35 被阅读0次

假设前端nginx只存在index.html

构建反向代理,nginx仅仅处理静态内容不处理动态内容

location ~ \.php$ {
proxy_pass 192.168.0.1:80;
}

客户端访问localhost:8080/index.html,这时候前端nginx进行响应

location ~ .php$这里是正则表达式匹配.php结尾的文件nginx自动pass给了192.168.0.1 192.168.0.1的内容由他的apache、nginx或者iis来处理完返回给nginx
最终输出客户端显示(memcache或者squid可以支持缓存)

上面是最最简单使用nginx反向代理服务器的实例。

location ^~ /phpmyadmin/ {
proxy_pass 127.0.0.1:80;
}
location ^~ \.php$ {
proxy_pass 8.8.8.8;
}

第一个部分的location 是匹配localhost/phpmyadmin/开头的话(本地nginx目录下不存在phpmyadmin目录),nginx自动pass到127.0.0.1:80的服务器上,该服务器对phpmyadmin的文件解析,结果发送给nginx,客户端显示,如果客户端访问URL地址是http://localhost/demo.php的话,则会pass到8.8.8.8的apache上进行处理

通过上面实例,实现了基本针对不同请求的负载均衡

访问静态页面index.html,nginx直接响应
访问demo.php,8.8.8.8的apache来响应
访问phpmyadmin下的文件,127.0.0.1:80apache响应

访问同一个页面的负载均衡实现:
当用户访问http://localhost/demo.php页面是,我们实现两台服务器的负载均衡(实际情况两台服务器上的数据同步要求一致)

nginx.conf:

upstream myCluster {
server 127.0.0.1:8080;
server 8.8.8.8:80;
}

表明这台Server Cluster包含2台服务器

location ~ \.php$ {
proxy_pass http://myCluster;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

当用户访问http://localhost/demo.php时,nginx下面不存在该文件,将自动pass到myCluster定义的服务器集群中,由127.0.0.1:8080 和8.8.8.8:80来处理,可以看到上面再定义upstream的时候每个server后面是没有定义去那种,表明两者轮询几率相等,每个请求按照时间的顺序逐一分配到不同后端服务器,如果后端服务器宕机,可自动剔除

如果希望更多响应的话:

upstream myCluster{
server 127.0.0.1:8080 weight=5; # weight指定轮询几率,weight和访问比率成正比
server 8.8.8.8:80;
}

实际应用时,server1 和server2上分别保留相同的数据,需要考虑两者数据同步
可以采用rsync或者nfs吧。这个不太了解

相关文章

网友评论

      本文标题:nginx反向代理实现负载均衡

      本文链接:https://www.haomeiwen.com/subject/ctohfttx.html