EZ Zoom Full-Page Cache mit Magento unter nginx verwenden

Magento-Shops lassen sich durch den Einsatz des Zoom Full-Page Caches erheblich beschleunigen, da sich bei gecachten Seiten der komplette PHP-MySQL-Stack umgehen läßt. Seitenladezeiten von 100 - 200ms sind so keine Seltenheit mehr.

Der Zoom Full-Page Cache läßt sich natürlich auch mit nginx nutzen. Wir stellen Ihnen dazu schon eine fertige Konfiguration zur Verfügung. Um diese zu übernehmen, gehen Sie in ISPConfig zum Optionen-Reiter Ihrer Website und platzieren Sie den Cursor im (leeren) nginx-Direktiven-Feld:

Rechts neben dem Feld finden Sie einige vorgefertigte Konfigurationen. Klicken Sie auf den Link [Magento + EZ Zoom Full Page Cache], um die dazugehörige nginx-Konfiguration in das nginx-Direktiven-Feld zu übernehmen:

Die Konfiguration sollte jetzt in das nginx-Direktiven-Feld übernommen worden sein:

Stellen Sie sicher, daß in den Zeilen...

set $code default;   # This should match your MAGE_RUN_CODE

... und...

            fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores

... der korrekte Store-Code Ihres Online-Shops eingetragen ist (Standardwert: default).

Speichern Sie die Einstellungen; nach ca. ein bis zwei Minuten sollten die Änderungen übernommen worden und der Cache funktionsfähig sein, sofern Sie das Zoom Full-Page Cache-Modul in Magento aktivert haben.

Hier ist die komplette Konfiguration, die im nginx-Direktiven-Feld stehen sollte:

set $ua '';
set $zget /zget;

# User Agent theme overrides will be cached to their own sub-directories
# if ( $http_user_agent ~ iphone ){
#    set $ua '/default/default/iphone';
# }

set $mzi /ZOOM_INDEX;
set $code default;   # This should match your MAGE_RUN_CODE

# Multi-language stores use different codes on the same domain. Use the 'store' cookie to detect this
# if ($cookie_store) { set $code $cookie_store; }

set $zoombase        /var/zoom/$code$ua;
set $zoomuri         $zoombase$uri;     # This will be pages without toolbars (products, CMS, etc)
set $zoomuriget     $zoomuri$zget;     # Here is our initial category variable

# By default, we will always check for the first page of a potential category page
set $p 1;

# Initialize toolbar state according to Zoom cookies.
set $dir   $cookie_zoom_dir;
set $limit $cookie_zoom_limit;
set $mode  $cookie_zoom_mode;
set $order $cookie_zoom_order;

set $zoomg $zoomuriget;

# Initialize layered navigation variables
set $cat    "";
set $price  "";

# Over-ride toolbar state with GET variables (if they exist)
if ($arg_p)     {
  set $p     $arg_p;
}
if ($arg_dir)   {
  set $dir   $arg_dir;
}
if ($arg_limit) {
  set $limit $arg_limit;
}
if ($arg_mode)  {
  set $mode  $arg_mode;
}
if ($arg_order) {
  set $order $arg_order;
}

# Layered navigation will be appended in alphabetical order to the final string
if ($arg_cat)   {
  set $cat   /cat/$arg_cat;
}
if ($arg_price) {
  set $price /price/$arg_price;
}

set $control &dir=$dir&limit=$limit&mode=$mode&order=$order;

# If there is no given toolbar state, look for symlink of the default state (at the given page)
if ($control = "&dir=&limit=&mode=&order=") {
  set $zoomg $zoomg/p/$p;
}

# Otherwise, construct complete cache filename (this requires normalized URL for consistent hits)
if ($zoomg = $zoomuriget) {
  set $zoomg $zoomg/p/$p/dir/$dir/limit/$limit/mode/$mode/order/$order$cat$price;
}

# A fix to redirect the index page to the proper file
#if ($request_uri = /) {
#  set $zoomuri $zoomuri$mzi;
#}

# Append the "ZOOM_INDEX" to the file category path
set $zoomg $zoomg$mzi;

# Now clean the filename of irregular characters
if ($zoomg ~ (.*)/price/([0-9]+),([0-9]+)(.*)) {
  set $zoomg $1/price/$2%2C$3$4;
}

client_max_body_size 100M;

location / {
        index index.html index.php; ## Allow a static html file to be shown first
        try_files $zoomuri $zoomg $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
        expires 30d; ## Assume all files are cachable
}

## These locations would be hidden by .htaccess normally
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 /var/export/ { ## Allow admins only to view export folder
        auth_basic           "Restricted"; ## Message shown in login window
        auth_basic_user_file /var/www/example.com/.htpasswd; ## See /etc/nginx/htpassword
        autoindex            on;
}

location ~ \.php/ { ## Forward paths like /js/index.php/x.js to relevant handler
        rewrite ^(.*\.php)/ $1 last;
}

location /skin/m/ {
        rewrite ^/skin/m/([0-9]+)(/.*\.(js|css))$ /lib/minify/m.php?f=$2&d=$1 last;
}

location @handler { ## Magento uses a common front handler
        rewrite / /index.php;
}

location @php { ##merge##
            fastcgi_param  HTTPS $fastcgi_https;
            fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
            fastcgi_param  MAGE_RUN_TYPE store;
}

Nach oben