记录一下Nginx做反向代理和负载均衡,免得以后忘记。
nginx是一个很好的web服务器,用它做反向代理和负载均衡很简单,只需几句代码就搞定。
基本环境:3台Nginx服务器,Nginx1:192.168.1.31,Nginx2:192.168.1.32, Nginx3:192.168.1.33,其中Nginx1作为负载均衡器
软件版本:centos 6.8 php-fpm版本:5.6 nginx版本:1.6.2 mysql版本:5.6
配置步骤:
第一步:给3台Nginx服务器配置基础环境。
第二步:Nginx1做为反向代理服务器,故需要把对php的支持关闭。
第三步:在Nginx1服务器的Nginx配置文件中http{}内配置(反向代理)负载均衡器的upstream。
upstream的配置格式:
upstream 自定义名称{ server host名称1(可以是ip或者域名):端口 各种参数; server host名称2(可以是ip或者域名):端口 各种参数; }
我的配置为:
upstream mytest{ server 192.168.1.32; server 192.168.1.33; }
第四步:在Nginx1服务器的Nginx配置文件中server{}中配置proxy_pass
location / { proxy_pass http://mytest; }
到这里,反向代理和负载均衡已经配置完了,就是这么简单。但还有一个明显的问题,就是Nginx2和Nginx3中获取到的客户端ip是反向代理器的ip,而不是用户真是的ip,怎么解决呢?这就要用到X-Forwarded-For了,配置也很简单,只需要把刚才配置的proxy_pass做一下修改。
location / { proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://mytest; }
第五步:检测配置是否成功
在Nginx2的/usr/local/html下创建index.php文件
<?php echo 'Nginx2';
在Nginx3的/usr/local/html下创建index.php文件
<?php echo 'Nginx3';
检验192.168.1.32/index.php和192.168.1.33/index.php能否正常访问
如果能正常访问,多次浏览器打开192.168.1.31/index.php访问,如果Nginx2和Nginx3交替显示,则说明负载均衡配置成功
对于你是否配置成功,还可以通过Nginx2和Nginx3的访问日志来确认。
注:默认的nginx负载均衡策略是轮询的,当然我们可以自己更改,这里就不多说了。