centos下nginx负载均衡

192.168.55.115为主服务器

192.168.55.185为从服务器


先需要将发送到服务器端的请求进行分流,具体要求如下


要求/index.php/*的请求访问主服务器

/api.php/1/files/*的请求访问主服务器

/api.php/1/files_put/*的请求访问主服务器

/api.php/1/thumbnails/*的请求访问主服务器

/statics/thumbnails/*的请求访问主服务器


其它的都访问从服务器



主服务器192.168.55.115的server配置

upstream follower  {
      server 192.168.55.185:80 max_fails=5 fail_timeout=360s;
}

server {
        listen       80;
        server_name  192.168.55.115;
        index index.html index.htm index.php;
        root /www/web/sign_name;
        client_max_body_size 10240m;

        location ~ ^/index\.php\w*|/api\.php/\d+/(\bfiles\b|\bfiles_put\b|\bthumbnails\b)/\w* {
                set $script $uri;
                set $path_info "";

                if ($uri ~ "^(.+.php)(/.+)") {
                        set $script $1;
                        set $path_info $2;
                }

                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /www/web/sign_name$fastcgi_script_name;
                include        fastcgi_params;
                fastcgi_param  SCRIPT_NAME $script;
                fastcgi_param  PATH_INFO $path_info;
        }

        location ~ ^/statics/thumbnails/\w* {

        }


        location / {
                proxy_pass  http://follower;
                proxy_set_header Host $http_host;
                proxy_next_upstream     error timeout invalid_header http_500;
                proxy_connect_timeout   360s;

                #rewrite ^(.*?)api.php/(.*)$ $1api.php?$2;
                #rewrite ^(.*?)index.php/(.*)$ $1index.php?$2;
        }
}


其中

                set $script $uri;
                set $path_info "";

                if ($uri ~ "^(.+.php)(/.+)") {
                        set $script $1;
                        set $path_info $2;
                }
的设置是为了配置php的$_Server[''path_info"]获取了全路径的问题, 具体请参考 这里



从服务器192.168.55.185的server配置

server {
        listen       80;
        server_name  192.168.55.185;
        index index.html index.htm index.php;
        root /www/web/sign_name;
        client_max_body_size 10240m;

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /www/web/sign_name$fastcgi_script_name;
                include        fastcgi_params;
        }

        location / {
                rewrite ^(.*?)api.php/(.*)$ $1api.php?$2;
                rewrite ^(.*?)index.php/(.*)$ $1index.php?$2;
        }
}




   

你可能感兴趣的:(nginx,server,centos,服务器,Path,include)