Magento com nginx: regras de configuração diferentes para a seção admin

2

Estou montando uma loja Magento com o nginx, e a loja está funcionando muito bem. No entanto, agora gostaria de definir um valor client_max_body_size mais alto (digamos 100m), mas apenas para a seção administrativa.

Já pesquisei on-line, mas não consigo descobrir como fazer isso funcionar. Provavelmente estou entendendo mal os blocos de localização nesse cenário, então talvez você possa me ajudar ainda mais.

Eu tenho o seguinte bloco de servidores:

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;
    }
}

Agora, digamos que o administrador esteja no link . Portanto, devo aplicar um client_max_body_size mais alto dentro de um bloco de localização location /index.php/admin_section/ { ... } . Mas quando faço isso, essa regra está sendo ignorada pelo último bloco location ~ .php$ { ... } .

Sei que posso ajustar algumas regras de configuração em uma instrução if ($request_uri ~ /admin_section/) { ... } , mas o nginx não aceitará a diretiva client_max_body_size em uma instrução if.

Depois tentei adicionar um bloco de localização antes e dentro do bloco ~ .php$ location e antes de qualquer outro bloco de localização. Eu também tentei copiar o conteúdo do bloco ~ .php$ para o bloco /index.php/admin_section/ e colocá-lo antes e depois do bloco ~ .php$ , mas nada parece funcionar.

Como faço para que isso funcione?

    
por redelschaap 26.01.2016 / 11:16

1 resposta

1

O seguinte bloco pode funcionar. Ele replica o bloco de localização do PHP (que é o destino final usual do seu URI de administrador).

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;
}

Eu não posso testá-lo, mas espero que não haja efeitos colaterais para quebrar o Magento.

    
por 26.01.2016 / 11:36

Tags