PHP 路由不同的 NGINX 集群


PHP route different NGINX cluster

我有一个使用 ZF2 的 PHP 应用程序 - 所以所有请求都进入索引.php它会整理出自己的路由。

我想配置以下设置:

www.example.com请求转到cluster_web块中配置的服务器。
www.example.com/admin请求将转到cluser_admin块中配置的服务器。

如何使用NGINX实现这一点?

配置当前如下所示:

/

etc/nginx/conf.d/cluster.conf

upstream cluster_web {
    server 192.168.0.10:9000;
    server 192.168.0.11:9000;
}
upstream cluster_admin {
    server 192.168.0.20:9000;
    server 192.168.0.21:9000;
}
/

etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  _;
    root         /var/www/public;
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ '.php$ {
        try_files       $uri =404;
        # how do I split this out?
        fastcgi_pass    cluster_web;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
}

确定我可能需要在某个地方location /admin?但不确定在哪里。

提前非常感谢。

我想

我可能已经解决了这个问题,但我不确定这是最优化的方法。

# web requests
server {
    listen       80;
    server_name  _;
    root         /var/www/public;
    location /admin {
        proxy_pass http://127.0.0.1:8080;
    }
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ '.php$ {
        try_files       $uri =404;
        fastcgi_pass    cluster_web;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
}
# admin requests
server {
    listen       8080;
    root         /var/www/public;
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ '.php$ {
        try_files       $uri =404;
        fastcgi_pass    cluster_admin;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
}

任何关于优化的想法将不胜感激。