我正在尝试做基于位置的Fastcgi服务器。
所有请求/ api / v1 / – >服务器v1:9000和/ api / v2 / – >服务器v2:9000我的nginxconfiguration是
server { listen 80; index index.php index.html; root /var/www/public; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass v1:9000; if ( $uri ~ "^/api/v1/") { fastcgi_pass v1:9000; } if ( $uri ~ "^/api/v2/") { fastcgi_pass v2:9000; } fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { try_files $uri /index.php?$args; } }
您需要使用不同版本的location指令。 例如:
location ^~ ^/api/v1/.+\.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass v1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location ~ ^/api/v2/.+\.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass v2:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; }