转 : http://www.jbxue.com/article/7923.html

介绍一个nginx、mysql、php-fpm环境下配置负载均衡的例子,有需要的朋友,可以参考下。

系统环境如下:
前端Nginx:192.168.93.137
后端web1:192.168.0.11
后端web2:192.168.0.12

1、前端nginx配置

复制代码代码示例:

http {
      ……
        client_max_body_size 300m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_buffer_size 16k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;

upstream  www.jbxue.com  {
               #server   192.168.93.137:80;
               server   192.168.0.11:80;
               server   192.168.0.12:80;
       }
       upstream  www.jbxue007.com  {
               #server   192.168.93.137:80;
               server   192.168.0.11:80;
               server   192.168.0.12:80;
       }
      server
       {
               listen  80;
               server_name  www.jbxue.com;

location / {
          proxy_pass        http://www.jbxue.com;
          proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
               }

log_format  jbxue  '$remote_addr - $remote_user [$time_local] $request '
     '"$status" $body_bytes_sent "$http_referer" '
     '"$http_user_agent" "$http_x_forwarded_for"';
               access_log  /home/logs/www.jbxue.log  jbxue;
       }

server
       {
               listen  80;
               server_name  www.jbxue007.com;

location / {
          proxy_pass        http://www.jbxue007.com;
          proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
               }

log_format  jbxue007  '$remote_addr - $remote_user [$time_local] $request '
     '"$status" $body_bytes_sent "$http_referer" '
     '"$http_user_agent" "$http_x_forwarded_for"';
               access_log  /home/logs/www.jbxue.log  jbxue007;
       }
}

通过upstream 名字 {}定义后端web的负载机器,然后在虚拟主机中通过 proxy_pass http://名字; 来使用upstream,再自定义一下日志格式,以获取用户的IP。

2、后端web配置:

复制代码代码示例:

server
{
  listen       80;
  server_name www.jbxue.com;
  index index.html index.php;
  root  /home/www/www.jbxue.com;
  access_log  /home/logs/access_www.jbxue.com.log;

if (-d $request_filename){
          rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  }

error_page   500 502 503 504 404 403 http://www.jbxue.com;

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
          expires 30d;
  }

location ~ .*\.(js|css)?$ {
          expires 6h;
  }

location ~ .*\.(log|txt)$
  {
          deny all;
  }

location ~ .*\.(php)?$
  {
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index index.php;
          include fcgi.conf;
  }
        }

server
        {
  listen       80;
  server_name www.jbxue007.com;
  index index.html index.php;
  root  /home/www/www.jbxue007.com;
  access_log  /home/logs/access_www.jbxue007.com.log;

if (-d $request_filename){
          rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  }

error_page   500 502 503 504 404 403 http://www.jbxue007.com;

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
          expires 30d;
  }

location ~ .*\.(js|css)?$ {
          expires 6h;
  }

location ~ .*\.(log|txt)$
  {
          deny all;
  }

location ~ .*\.(php)?$
  {
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index index.php;
          include fcgi.conf;
  }
}

附,Nginx负载的五种模式,即upstream的模式。

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

复制代码代码示例:
upstream www.jbxue.com {
server 192.168.0.11 weight=10;
server 192.168.0.12 weight=10;
}

3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

复制代码代码示例:
upstream www.jbxue.com {
ip_hash;
server 192.168.0.11:80;
server 192.168.0.12:80;
}

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

复制代码代码示例:
upstream www.jbxue.com {
server 192.168.0.11:80;
server 192.168.0.12:80;
hash $request_uri;
hash_method crc32;
}

用得比较多得应该是第3、5这两种。
后端的web文件同步可以选择nfs、rsync等。

负载均衡 之 nginx+多台php-fpm

https://code.google.com/p/sna/wiki/NginxWithPHPFPM

http://hyf.zjmp.com/article.asp?id=683

[转]Nginx+mysql+php-fpm负载均衡配置实例的更多相关文章

  1. Nginx做NodeJS应用负载均衡配置实例

    这篇文章主要介绍了Nginx做NodeJS应用负载均衡配置实例,本文直接给出配置实例,需要的朋友可以参考下. 负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持.负载均 ...

  2. Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  3. Nginx负载均衡配置实例详解(转)

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  4. Nginx反向代理实现负载均衡配置图解

    Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...

  5. [转载]Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  6. nginx 动静分离 以及 负载均衡配置

    测试环境 系统版本:win7 Nginx版本:nginx-1.8.1 Tomcat版本:tomcat-6.0.14 1动静分离配置 Nginx.conf 中 server中 server { list ...

  7. Nginx实现七层负载均衡配置指导

    本文描述了如何使用Nginx实现在应用层实现7层负载均衡功能,Nginx支持虚拟主机,可以按照轮询,IP哈希,URL哈希,权重方式对后端服务器做负载均衡,还支持后端服务器健康检查功能.废话不多说,详细 ...

  8. Nginx反向代理,负载均衡配置

    主配置文件:nginx.conf # For more information on configuration, see: # * Official English Documentation: h ...

  9. Nginx反向代理以及负载均衡配置

    项目地址:http://git.oschina.net/miki-long/nginx 前提:最近在研究nginx的用法,在windows上小试了一下,由于windows下不支持nginx缓存配置,所 ...

随机推荐

  1. ionic获取ios唯一设备id的解决方案

    经常有朋友来问这个问题. 每次都去解释这个问题也浪费不少时间, 所以还是开一篇文章, 把这个问题说清楚吧. 先纠正一个误区吧: 有同学可以通过ionic natvie的device插件获取. 我们在文 ...

  2. cropper.js实现图片裁剪预览并转换为base64发送至服务端。

    一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...

  3. UI自动化测试(一)简介及Selenium工具的介绍和环境搭建

    自动化测试简介 1.1何为自动化测试? 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程.换言之,就是以程序实现的方式来代替手工测试. 1.2自动化测试分类 分为功能自动化测 ...

  4. centos 7 安装 BeautifulSoup 和requests

    安装beautifulsoup wget https://www.crummy.com/software/BeautifulSoup/bs4/download/4.5/beautifulsoup4-4 ...

  5. android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  6. Nuget 下载过慢的解决办法

    设置依赖项行为为忽略,文件冲突操作为忽略

  7. Android 内存泄露测试数据处理--procrank,setprop,getprop(转)

    1.Android内存测试常用的几个概念. VSS--virtual set size 虚拟耗用内存(包含共享库占用的内存)RSS--Resident set size实际使用的物理内存(包含共享库占 ...

  8. STM32F4, USB HS with ULPI and Suspend/Wakeup

    Hi guys,I am in need of your help, unfortunately STs documentation is lacking some information here. ...

  9. stap 命令

    SystemTap accepts script as command line option or external file, for example: * Command-line script ...

  10. Revit Family API 找到实体某一方向上的面。

    PlanarFace.Normal取得向量.IsAlmostEqualTo判断向量是否一致. // ================================================== ...