Você precisa de blocos de servidores separados para isso.
# /etc/nginx/sites-available/php.conf
location @php {
fastcgi_param FEED_ENV default;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
}
... e sua configuração de servidor:
# /etc/nginx/sites-available/server.conf;
listen 80;
root html/cooking/public;
index index.html index.htm index.php;
include fastcgi_params;
location / {
location ~* \.(ico|css|js|gif|jpe?g|png)$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
try_files $uri $uri/ @php;
}
... e sua configuração final do host virtual:
# /etc/nginx/sites-available/virtual_hosts.conf
server {
server_name cooking.com;
include sites-available/server.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include sites-available/php.conf;
}
server {
server_name user.cooking.com;
include sites-available/server.conf;
fastcgi_param SCRIPT_FILENAME $document_root/index.php/user/$args;
include sites-available/php.conf;
}
server {
server_name admin.cooking.com;
include sites-available/server.conf;
fastcgi_param SCRIPT_FILENAME $document_root/index.php/admin/$args;
include sites-available/php.conf;
}
Você cria apenas um link simbólico em sites-enabled
para o virtual_hosts.conf
!
Como não sei seu ambiente exato (o back-end e como ele lida com os URLs recebidos), não posso fornecer uma configuração perfeita. Mas isso deve ser um bom ponto de partida.