У меня довольно стандартная настройка с симфоническим приложением с фронтальным контроллером, работающим на nginx 1.10 и Centos7. Это все работает, как и ожидалось, блоки там, где ожидается и т.д.nginx add_header на конкретном URI на PHP-приложение с передним контроллером
server {
listen 80;
root /opt/my/code/web;
index app.php;
charset utf-8;
location/{
try_files $uri $uri/ /app.php$is_args$args;
}
# pass the PHP scripts to php5-fpm
location ~ ^/app\.php(/|$) {
# problem here
location ~ ^/recording {
add_header Content-Type audio/x-wav;
}
fastcgi_split_path_info ^(.+?\.php)(/?.*)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index app.php;
include /etc/nginx/fastcgi_params;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Prevents URIs that include the front controller. This will 404:
internal;
}
# return 404 for all other php files not matching the front controller
location ~ \.php$ {
return 404;
}
}
У меня есть несколько вопросов, но главным является то, что я хочу специальную обработку для URI сопоставления /recording
, но он все еще должен пройти через фронт-контроллер. (Это не спорно, он должен пройти через фронт-контроллер и изменить заголовок ответа, если URI соответствует /recording
)
С try_files
перенаправляет к параметру location ~ ^/app\.php(/|$)
Nginx в $uri
используется для согласования местоположения обновляются до /app.php
, поэтому любых вложенных мест не будет работать.
Я не могу использовать add_header
вне блока контроллера, потому что любые директивы add_header
будут сброшены при внутренней переадресации.
Очевидно, что я не могу использовать location if
с add_header
.
Это простое в apache, но единственное удаленное решение, которое я нашел, использует сторонний модуль lua, и документы по установке немного тонкие, и мысль о компиляции из источника на centos дает мне сердцебиение ,
в моем случае конкретно я отказался, он просто не будет работать, так что я просто mordernized этот код HTTPS : //gist.github.com/Erutan409/8e774dfb2b343fe78b14#file-mimetype-php и установить тип mime с использованием расширений файлов до ответа – WiR3D