天天看點

Nginx-負載均衡實踐(一、對PHP-FPM進行分攤) - John_ABC

Nginx-負載均衡實踐(一、對PHP-FPM進行分攤)

應用的伺服器分為前端和後端

  前端伺服器: 負責對靜态檔案(比如JS、CSS、圖檔)等的響應, 以及把PHP請求分發到後端伺服器

  後端伺服器: 處理前端伺服器分發而來的PHP請求

前端伺服器: 192.168.1.10

後端伺服器: 192.168.1.11, 192.168.1.12

後端伺服器的配置:

  兩台後端伺服器分别配置 php-fpm 的監聽得之和端口, 可以通過修改php-fpm.conf或對應php-fpm配置檔案來修改監聽位址和端口

  由于是 php-fpm, 是以配置如下

  192.168.1.11 伺服器中php-fpm的配置資訊

listen=192.168.1.11:9000      

  192.168.1.12 伺服器中php-fpm的配置資訊

listen=192.168.1.12:9000      

  修改完後重新開機兩台伺服器的 php-fpm

前端伺服器的配置:

#其中 "blog" 表示随意起的一個 upstream 的名稱, 下文要用, 此塊用來設定後端伺服器
upstream blog {
    server 192.168.1.11:9000 weight=1; #192.168.1.11:9000為後端伺服器192.168.1.11的php-fpm程序監聽的位址和端口
    server 192.168.1.12:9000 weight=1; #192.168.1.12:9000為後端伺服器192.168.1.12的php-fpm程序監聽的位址和端口
}

server {
    listen       80;
    server_name  blog.yilexun.com;
    root    /dragon/webapp/blog;
    index   index.html index.php;

    location ~* \.(ico|css|js|gif|jpe?g|png)$ {
        #error_page  404 /404.html;
        break;
    }
    if (!-e $request_filename) {
        rewrite ^(.*)\.(ico|css|js|gif|jpe?g|png)$ /404.html last;
        rewrite ^(.+)$ /index.php last;
        break;
    }
    location ~* \.php(\?|\/)? {
        fastcgi_pass_request_body off;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        client_body_in_file_only clean;
        client_max_body_size 8m;
        fastcgi_param REQUEST_BODY_FILE $request_body_file;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass blog; #此處 "blog" 就是上面定義的 upstream 的名稱
        fastcgi_index index.php;
    }
    location = /50x.html {
        root   html;
    }
}      

  配置完後重新開機 nginx

分别在前端伺服器和後端伺服器上都要上傳相同的目錄檔案, 我的實驗結果是雖然用後端伺服器解析PHP檔案, 但是前後端伺服器都必須有對應的PHP檔案目錄

  /dragon/webapp/blog/

    index.php

<?php
    echo \'前端\'; //三台伺服器分别為 \'前端\', \'後端1\', \'後端2\'      

通路 http://blog.yilexun.com/index.php, 每次重新整理可以看到輸出結果在\'前端\', \'後端1\', \'後端2\', 中不斷變化, 表示配置成功

接下來會繼續實作 nginx 伺服器間的負載均衡, 敬請期待。。