Я настраиваю магазин Magento с помощью nginx, и он отлично работает. Однако сейчас я бы хотел установить более высокую client_max_body_size
значение (скажем 100м), но только для админки.
Я уже искал в Интернете, но не могу понять, как заставить это работать. Я, вероятно, неправильно понимаю блоки локации в этом сценарии, так что, возможно, вы можете мне помочь.
У меня есть следующий блок сервера:
server {
listen 80;
server_name {domain};
root {root};
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires max;
}
## These locations should be protected
location ^~ /app/ { deny all; }
location ^~ /includes/ { deny all; }
location ^~ /lib/ { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/ { deny all; }
location ^~ /report/config.xml { deny all; }
location ^~ /var/ { deny all; }
location /. {
return 404;
}
location /api {
rewrite ^/api/rest /api.php?type=rest last;
}
location @handler {
rewrite / /index.php;
}
location ~ .php/ {
rewrite ^(.*.php)/ $1 last;
}
location ~ .php$ {
if (!-e $request_filename) {
rewrite / /index.php last;
}
expires off;
fastcgi_pass hhvm;
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE $mage_code;
fastcgi_param MAGE_RUN_TYPE $mage_type;
include fastcgi_params;
}
}
Теперь допустим, что админ включен http://domain.com/index.php/admin_section/. Поэтому я должен применить более высокий client_max_body_size
внутри блока местоположения location /index.php/admin_section/ { ... }
. Но когда я это делаю, это правило игнорируется последним location ~ .php$ { ... }
блок.
Я знаю, что могу настроить некоторые правила конфигурации в if ($request_uri ~ /admin_section/) { ... }
оператор, но nginx не примет client_max_body_size
директива внутри оператора if.
Затем я попытался добавить блок местоположения до и внутри ~ .php$
блок местоположения и перед любым другим блоком местоположения. Я также пытался скопировать содержимое ~ .php$
блокировать /index.php/admin_section/
заблокировать и поставить до и после ~ .php$
блокировать, но вроде ничего не работает.
Как мне заставить это работать?
Следующий блок может работать. Он реплицирует блок местоположения PHP (который обычно является конечным местом назначения для вашего URI администратора).
location ^~ /index.php/admin_section/ {
client_max_body_size 100m;
expires off;
fastcgi_pass hhvm;
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
fastcgi_read_timeout 300s;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param MAGE_RUN_CODE $mage_code;
fastcgi_param MAGE_RUN_TYPE $mage_type;
}
Я не могу это протестировать, но, надеюсь, у Magento нет побочных эффектов.