Я хочу настроить symfony с nginx, и эта конфигурация работает нормально
server {
listen 80;
root /src/web;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ ^/app\.php(/|$) {
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
error_log /var/log/nginx/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}
Однако я также хочу, чтобы на моем сервере я также имел доступ к файлам через app_dev.php и app_test.php
пока что с конфигурацией выше. http://127.0.0.1/api/check
работает нормально
но я также хочу
http://127.0.0.1/app_dev.php/api/check
и http://127.0.0.1/app_test.php/api/check
работать тоже.
В настоящее время он дает мне ошибку 404
ОБНОВИТЬ
server {
listen 80;
root /src/web;
client_max_body_size 30m;
client_body_buffer_size 128k;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ \.php {
root /src/web/;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
try_files $uri =404;
}
}
Ваша конфигурация по какой-то причине настроена для пересылки на PHP только запросы к app.php.
location ~ ^/app\.php(/|$) {
Поскольку вам нужны все файлы PHP, вы должны просто разрешить обработку всех файлов PHP.
location ~ \.php {
Конечно, вам также нужно удалить internal;
как указано в комментарии. Это следует заменить try_files $uri =404;
. Это мера безопасности.