Сначала некоторые подробности о моей установке:
- Я работаю со статическим веб-приложением (HTML + JS) из стандартного Nginx webroot
- У меня работает сервер PHP-FPM на localhost: 9000
- Файл назначения должен быть /api/webroot/index.php для FPM ( всегда , не нужно пытаться_файлами и т. Д.)
- Мне нужно переслать все / api и / api-debug вызовы для достижения localhost: 9000, и /app/webroot/index.php должен обрабатывать все эти запросы.
У меня есть следующая рабочая конфигурация Nginx:
upstream fastcgi_backend {
server localhost:9000;
keepalive 30;
}
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
location ~ ^/(api|api-debug)/ {
root /app/webroot;
index index.php;
try_files $uri /api/index.php$is_args$args;
location ~ \.php$ {
fastcgi_pass fastcgi_backend;
fastcgi_split_path_info ^(?:\/api\/)(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /app/webroot/$fastcgi_script_name;
include fastcgi_params;
}
}
}
}
Я просто хочу сделать это более простым и эффективным, потому что, как я вижу, теперь это беспорядок.Я попытался настроить, например,
try_files $ uri /api/index.php$is_args$args;
до
try_files $uri /api/webroot/index.php$is_args$args;
и это не удалось ... Единственная причина, по которой он работает, заключается в том, что /api/index.php включает / api / webroot / index.php, но я вижу, что это неэффективно.
Я обнаружил, что отладку конфигурации nginx сложно, потому что это нелегко проверить.
Большое спасибо за вашу помощь заранее!