Я пытаюсь настроить nginx. Если я войду http://localhost/dav
это должно использовать index.php
скрипт из настроенного root
(c: / wt-nmp / www / app-dav / frontend / web) в location /dav
директивы. Но когда я отлаживаю nginx, он все еще использует root
настроен в server
конфигурации.
В отладке это выглядит так:
location /dav
и устанавливает root
к новому значению и изменениям index.php?dav
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
,
Я думаю, что этот код должен работать так:
root
устанавливается из server
директива к .../m24/web
http://example.com/dav
тогда директива location /dav
следует изменить root
в .../m24/app-dav/frontend/web
и PHP скрипт из этого места должен быть выполнен..../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;
}
}
У вас должно быть 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 `
Других решений пока нет …