Я пытаюсь настроить веб-сервер nginx для моего веб-приложения.
Ниже приведены URL-адреса, которые я хочу
www.example.com -----> /var/www/html
www.example.com/backend/ -----> /var/www/app/backend/www
www.example.com/frontend/ -----> /var/www/app/frontend/www
Мне удаётся заставить /var/www/html обслуживать нужный мне php-файл для example.com, но два других мне заставить работать не удаётся.
Мое приложение создано на Yii, и я использовал его в качестве основы.https://github.com/clevertech/YiiBackboneBoilerplate
Есть переписывание для удаления index.php из URL
Когда я захожу на www.example.com/backend, меня перенаправляет на index.php, но у меня есть перезаписи для URL, которые делают ссылку такой www.example.com/backend/site/login
и в журналах ошибок появляются такие сообщения
"/var/www/app/backend/www/site/login/index.php" is not found (2: No such file or directory), client: 114.143.183.171, server: example.com, request: "GET /backend/site/login/ HTTP/1.1", host: "example.com"
Ниже приведен фрагмент моей конференции.
set $yii_bootstrap "index.php";
location / {
root /var/www/html/;
index $yii_bootstrap;
}
location /backend {
alias /var/www/app/backend/www;
index $yii_bootstrap;
}
location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(.*)$;
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
# connect to a unix domain-socket:
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
# This file is present on Debian systems..
include fastcgi_params;
}
Помогите пожалуйста решить эту проблему? Я пытался понять, но не могу найти, где я не прав.
решение1
1 запрос = 1 местоположение
Вам нужно будет дублировать ваше местоположение регулярного выражения, чтобы оно было найдено для каждого местоположения префикса, которое у вас есть. Это наиболее эффективный способ сделать это.
Не бойтесь копировать-вставлять! Эти несколько дополнительных байтов в конфигурации сделают конфигурацию nginx более читабельной, масштабируемой и работающей более эффективно.
location / {
root /var/www/html;
location ~* \.php$ {
[...]
}
}
location /backend/ {
alias /var/www/html/backend/www/;
location ~* \.php$ {
[...]
}
}
location /frontend/ {
alias /var/www/html/frontend/www/;
location ~* \.php$ {
[...]
}
}