Изменить корень nginx на разные запросы

Я пытаюсь настроить nginx. Если я войду http://localhost/dav это должно использовать index.php скрипт из настроенного root (c: / wt-nmp / www / app-dav / frontend / web) в location /dav директивы. Но когда я отлаживаю nginx, он все еще использует root настроен в server конфигурации.

В отладке это выглядит так:

  1. Оно использует location /dav и устанавливает root к новому значению и изменениям index.php?dav
  2. Теперь он использует location ~ \.php$ но $document_root еще указывает на c:/wt-nmp/www/m24/web, но я думаю, что это должно быть изменено в location /dav как указано в пункте 1.

Моя проблема в том, как настроить nginx для использования скрипта из c:/wt-nmp/www/app-dav/frontend/web когда я вхожу http://localhost/dav,

Я думаю, что этот код должен работать так:

  1. root устанавливается из server директива к .../m24/web
  2. Когда я ввожу URL http://example.com/dav тогда директива location /dav следует изменить root в .../m24/app-dav/frontend/web и PHP скрипт из этого места должен быть выполнен.
  3. Но когда я отлаживаю это приложение, скрипт из .../m24/web все еще выполняется. Зачем root директива в location /dav не меняется $document_root значение. $document_root все еще указывает на .../m24/web,

Самая важная часть моего конфига выглядит так:

server {
...

root "c:/wt-nmp/www/m24/web";
index index.html index.htm index.php;

location /dav {
root "c:/wt-nmp/www/m24/app-dav/frontend/web";
# The $uri gets mangled by nginx, however Yii urlmanager requires REQUEST_URI to route
set $original_uri $uri?$args;
# Try the actual uri, then uri as a directory, then send it to yii
try_files $uri $uri/ /index.php?$args;
}

location / {
#set original_uri to use as the request_uri later on
#The $uri gets mangled by nginx, however Yii urlmanager requires REQUEST_URI to route
set $original_uri $uri?$args;
#Try the actual uri, then uri as a directory, then send it to yii
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
fastcgi_pass                  php_farm;
include                       nginx.fastcgi.conf;
fastcgi_split_path_info       ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REQUEST_URI     $original_uri;
}
}

0

Решение

У вас должно быть 2 директивы местоположения, одна для php-файлов под /dav и еще один для статических файлов под /dav :

location ~ ^/dav/.*\.php$ {
root "c:/wt-nmp/www/app-dav/frontend";
try_files $uri =404;
include     nginx.fastcgi.conf;
fastcgi_pass    php_farm;
}

location ~ ^/dav/ {
root "c:/wt-nmp/www/app-dav/frontend";
}

Таким образом, файлы будут обслуживаться с c:/wt-nmp/www/app-dav/frontend/dav, Так что вы также можете захотеть rename c:/wt-nmp/www/app-dav/frontend/web c:/wt-nmp/www/app-dav/frontend/dav потому что путь URL должен совпадать с корневым подкаталогом!

Кроме того, убедитесь, что вы используете последнюю версию WT-NMP — переносимый стек разработки Nginx Mysql Php для Windows `

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]