[轉]Nginx+mysql+php-fpm負載平衡配置執行個體

來源:互聯網
上載者:User

標籤:style   http   使用   os   io   檔案   for   art   

轉 : 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.