Plesk

How to enable leverage browser caching for nginx?

Question

How to enable leverage browser caching (cache expiration) for nginx?

Answer

Leverage browser caching for nginx can be enabled by adding directives for webserver. Check out the following "Requirements and limitations" before proceed with enabling.

Requirements and limitations:

Warning: Any customization made is done at your own will and risk and it is bound to be possibly overwritten by a Plesk update/upgrade process

Leverage browser caching can be enabled for a domain or server-wide.

To enable leverage browser caching for a single domain

  1. Log into Plesk.

  2. Go to Domains > example.com > Apache & nginx Settings.

  3. Check the Enable nginx caching checkbox, disable the Serve static files directly by nginx checkbox and click OK/Apply.

To enable leverage browser caching for server-wide

  1. Log in to the server via SSH as root.

  2. Create an additional nginx configuration file:

    # touch /etc/nginx/conf.d/expires.global

  3. Open this file using text editor and paste following directives into it:

    location ~* .(js|jpg|jpeg|gif|png|css|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
    etag on;
    if_modified_since exact;
    add_header Pragma "public";
    add_header Cache-Control "max-age=31536000, public";
    }

  4. Create a directory for custom configuration templates:

    # mkdir -p /usr/local/psa/admin/conf/templates/custom/domain/

  5. Copy default nginx template to the newly created directory:

    # cp -p /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/

  6. Open /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php with text editor and add the following line in the bottom of the file:

    include /etc/nginx/conf.d/expires.global;

    So, the bottom of /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php file should look like:

    . . .

    include /etc/nginx/conf.d/expires.global;
    <?php if (is_file($VAR->domain->physicalHosting->customNginxConfigFile)): ?>
    include "<?php echo $VAR->domain->physicalHosting->customNginxConfigFile ?>";
    <?php endif ?>
    }

    As a result, all newly created domains will have leverage browser caching automatically enabled.

  7. In order to apply this…