使用nginx做反向代理及负载均衡

分类: PHP,服务器,分享  • 发布时间: 2015-07-26 14:13:15  • 浏览量:22513

好久之前做过几次用nginx做负载均衡,现在却有点忘了,今天又看了下文档,重新联系一边,这里记录一下,生的以后忘记。

nginx是一个强大的web服务器,而且使用起来也比较简单,用它做反向代理实现和负载均衡很简单,只需简单配置几下即可。

基本环境:3台Nginx服务器,ng1:192.168.99.155, ng2:192.168.99.152, ng3:192.168.99.135,其中ng1作为负载均衡器

软件版本:centos 6.5  php-fpm版本:5.6   nginx版本:1.6.2   mysql版本:5.1

配置步骤:

第一步:给3台nginx配置基础环境,参考:centos + nginx + php-fpm +mysql的简单配置

第二步:ng1做为反向代理服务器,故需要把对php的支持关闭,这里具体的步骤不再多说

第三步:在nginx配置文件http{}内配置(反向代理)负载均衡器的upstream

    upstream的配置格式:

    upstream 自定义名称{
       server host名称1(可以是ip或者域名):端口 各种参数;
       server host名称2(可以是ip或者域名):端口 各种参数;
    }

这里我们配置为:

    upstream mytest{
      server 192.168.99.152;
      server 192.168.99.135;
    }

第四步:在nginx配置文件server{}中配置proxy_pass

    location / {
        proxy_pass http://mytest;
    }

其实到这里,反向代理和负载均衡已经配置完了,就是这么简单,不过这有一个明显的问题,就是ng2和ng3中获取到的客户端ip是反向代理器的ip,而不是用户真是的ip,怎么解决呢?这就要用到X-Forwarded-For了,其实配置也很简单,只需要把刚才配置的proxy_pass做一下修改。

    location / {
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_pass http://mytest;
    }

第五步:检测配置是否成功

在ng2的/usr/local/html下创建index.php文件

<?php
    echo 'ng2222';

在ng3的/usr/local/html下创建index.php文件

<?php
    echo 'ng3333';

检验192.168.99.152/index.php和192.168.99.135/index.php能否正常访问

如果能正常访问,则使用192.168.99.155/index.php访问,如果多次刷新ng2222和ng3333交替显示,则说明负载均衡配置成功

其实对于你是否配置成功,还可以通过ng2和ng3的访问日志来确认。

默认的nginx负载均衡策略是轮询的,当然我们可以自己更改,这里就不多说了。

文章标签: php, centos, nginx, 负载均衡, 反向代理
用户评论:
  • 游客37013 2017-10-31 15:55:36

    66666

  • 游客62314 2018-10-26 09:09:30

    打开支付宝首页搜索“527479816”,即可领红包

  • 游客61253 2018-12-03 10:36:24

    [红包]支付宝大额红包! 瓜分15亿!打开支付宝首页搜数字“打开支付宝首页搜索“527479816” 立即领红包” 立即领取。昨天领到几块甚至几十块的人超级多,快试试吧。~[礼物]记得收藏,红包每天都可以领!

  • 游客47902 2018-12-19 15:09:21

    打开支付宝首页搜索“527479816”,即可领红包