大きなファイルのアップロードを1つの場所に有効にしたい場合は、その場所を別の場所に書き換えます。書き換えによって他の設定がリセットされているようです。nginxでrewriteとclient_max_body_sizeをどのように組み合わせることができますか?
私の設定:私はlocation
から出てserver
にclient_max_body_sizeを移動した場合
server {
listen 80;
server_name example.com;
root /var/www;
index index.php;
# this location requires large file upload
location /upload {
client_max_body_size 512M;
rewrite ^(.*)$ /index.php?request=$1 last;
}
# all other locations
location/{
rewrite ^(.*)$ /index.php?request=$1 last;
}
# pass the PHP scripts to FPM
location ~ \.php$ {
include /etc/nginx/includes/php;
}
}
、それが動作します。
location /upload
とlocation ~ \.php$
の両方に入力すると、それも動作します。しかし、他の場所で大きなファイルをアップロードすることはできません。
私はPHPに直接location /upload
で直接指示できると考えていましたが、書き換えを実行すると、とにかく別の場所が検索されます。それは私がPHPスクリプトの2つの別の場所を持つ必要があるということですか?書き換え後に他の場所に保存する方法はありますか?
すごいです!最初のものが動作しているようです!私はリダイレクトがループに入る原因になると思っていましたが、終端するインクルードのfcgi_passにヒットすると思います。 – DAB
実際、私はそれを取り戻す。私はまだphpの場所で私の最大ボディサイズを持っていた。私はデバッグログを有効にし、 'fastcgi_pass'を含むphpインクルードが無視され、再書き込みがすべての条件を再度テストするようになりました。デバッグログは次のとおりです:https://gist.github.com/macdabby/13832f4257a73f82c01c。私はparamsで何かを試してみるだろうが、それはどちらもうまくいかないようだ。 – DAB