子文件夹中的nginx站点

我有一些麻烦,让我的nginx设置工作的方式,我想要的。 我有一个站点example.localhost位于/​​ vagrant / frontend / www。 我的configuration,这是工作,看起来像这样:

server { listen 80; server_name example.localhost; root /vagrant/frontend/www; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } } 

但是,我想添加一个pipe理网站,位于/ vagrant / backend / www,到地址example.localhost / admin。 我的设置是这样的:

 location /admin { alias /vagrant/backend/www/; try_files $uri $uri/ /index.php?$args; location ~ \.php$ { include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } } 

处理“example.localhost / admin”的请求,但是当url看起来像“example.localhost / admin / site / index”时,它看起来像/ admin位置不匹配,因为请求在前端…

我一直坚持这个好几天了,任何帮助将不胜感激!

当url看起来像“example.localhost / admin / site / index”

如果你没有file /var/backend/www/site/index你的try_files指令的最后一项使得内部redirect到/index.php ,这个由外部location ~ \.php$处理location ~ \.php$

在这个configuration中,我为PHP定位了位置,修复了/admin/ location的try_files以redirect到/admin/index.php

 server { listen 80; server_name example.localhost; root /vagrant/frontend/www; index index.php; location / { try_files $uri $uri/ /index.php; location ~ \.php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } } location /admin { return 301 /admin/; } location /admin/ { alias /vagrant/backend/www/; try_files $uri $uri/ /admin/index.php; location ~ \.php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } } }