Я новичок в nginx. Пытаюсь развернуть его на kubernetes. Но получаю:
FastCGI отправил в stderr: «Основной скрипт неизвестен» при чтении заголовка ответа от восходящего потока, клиент: 10.0.1.1, сервер: , запрос: «GET /app.php/ HTTP/1.1», восходящий поток: «fastcgi://[::1]:9000», хост:
Я понятия не имею, как решить эту проблему. И когда я получаю URL:
Файл не найден.
Вот мой файл конфигурации:
server {
listen 80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /srv/webroot/web;
index app.php;
client_max_body_size 30M;
location / {
try_files $uri @pass_to_symfony;
}
location ~ /app_dev.php/ {
try_files $uri @pass_to_symfony_dev;
}
location @pass_to_symfony{
rewrite ^ /app.php?$request_uri last;
}
location @pass_to_symfony_dev{
rewrite ^ /app_dev.php?$request_uri last;
}
location ~ ^/app(_dev)?\.php($|/) {
fastcgi_pass localhost:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Мой проект на Symfony
решение1
Если PHP URI включает информацию о пути, вам необходимо использовать fastcgi_split_path_info
директиву (или что-то подобное), чтобы отделить фактическое имя скрипта (например, /app.php
) от информации о пути, добавленной к нему (например, /
).
location ~ ^/app(_dev)?\.php($|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass localhost:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Видетьэтот примердля получения подробной информации.