私は、nginx 1.10とCentos7で動作するフロントコントローラ付きのsymfony2のようなアプリでかなり標準的な設定をしています。この予想予想、ブロックなどのようにすべての作品nginx add_header on front controller with PHP特定のURIに
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
にマッチしたいということですが、それはまだフロントコントローラを通過しなければなりません。 try_files
は/app.php
に更新される位置合わせのために使用location ~ ^/app\.php(/|$)
nginxのの$uri
パラメータにリダイレクトするため
(これは議論の余地がないが、それはフロントコントローラを通過し、URIが/recording
と一致する場合、応答ヘッダを修正しなければならない)ので、任意のネストされた場所動作しません。
add_header
ディレクティブが内部リダイレクトでドロップされるため、フロントコントローラーブロックの外側ではadd_header
を使用できません。
明らかに私はlocation if
とadd_header
のどちらも使用できません。
これはApacheで簡単ですが、私が見つけた唯一のリモートソリューションはサードパーティ製のluaモジュールを使用しており、インストールドキュメントはそれほど薄くなく、centosのソースからコンパイルすると心臓の動悸。
特に私は、あきらめたことはうまく動作しませんので、私はちょうどこのコードのhttpsをmordernized(サポートするのがより困難とキュートではない:)があるためところで、私はこのソリューションを示唆していません) ://gist.github.com/Erutan409/8e774dfb2b343fe78b14#file-mimetype-phpそして応答の前にファイル拡張子を使用してMIMEタイプを設定してください – WiR3D