Ich möchte große Dateiuploads an einen einzigen Speicherort aktivieren, und dieser Speicherort wird dann an einen anderen Speicherort umgeschrieben. Es scheint, dass das Neuschreiben die anderen Konfigurationen zurücksetzt.Wie kann ich rewrite und client_max_body_size in nginx kombinieren?
Meine Config:
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;
}
}
Wenn ich die client_max_body_size aus dem location
und in die server
bewegen, dann funktioniert es. Wenn ich es sowohl in die UND location ~ \.php$
, dann funktioniert es auch. Ich möchte jedoch nicht, dass andere Standorte große Dateien hochladen können.
Ich dachte, ich könnte direkt auf PHP in der location /upload
verweisen, aber sobald ich die Neuschreibung ausführen, wird es sowieso nach einem anderen Speicherort suchen. Bedeutet das, dass ich zwei getrennte Standorte für PHP-Skripte haben müsste? Gibt es eine Möglichkeit, die client_max_body_size
nach dem Umschreiben durch andere Orte zu behalten?
Awesome! Der erste scheint zu funktionieren! Ich dachte, dass die Umleitung würde es in eine Schleife gehen, aber ich denke, wenn es den fcgi_pass im Include trifft, die es beendet. – DAB
eigentlich nehme ich das zurück. Ich hatte immer noch meine maximale Körpergröße in der PHP-Position. Ich habe das Debug-Log eingeschaltet und es erscheint das PHP-Include, das 'fastcgi_pass' ignoriert hat und das Neuschreiben hat begonnen, alle Bedingungen erneut zu testen. Hier ist das Debug-Protokoll: https://gist.github.com/macdabby/13832f4257a73f82c01c. Ich werde etwas mit den Params versuchen, aber das schien auch nicht zu funktionieren. – DAB