-1

Say I have 20 sites and I wish to automate the process of pasting 1X1 nginx.conf caching directives and 1X20 caching directives per 20 different virtual hosts I have?

Also, my virtual hosts have already been modified by Certbot and became a bit messy (Certbot 0.21.1-1+ubuntu16.04.1+certbot+0.2 adds many spaces and comments), so I'm now even less sure how to efficiently enable Nginx object caching for all my sites.

How would you do so efficiently?

Arcticooling
  • 1
  • 3
  • 7
  • 22

1 Answers1

1

Use includes.

Here's a typical configuration from one of my web sites:

server {
        server_name www.yes-www.org;

        root /srv/www/yes-www.org;

        access_log /var/log/nginx/yes-www.org-access.log nginx;
        access_log /var/log/nginx/cache.log cache;
        error_log /var/log/nginx/yes-www.org-error.log;

        ssl_certificate /etc/letsencrypt/live/www.yes-www.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.yes-www.org/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/www.yes-www.org/fullchain.pem;

        include includes/listen-443;
        include includes/cloudflare;
        include includes/letsencrypt;
        include includes/ssl;
        include includes/ssl_stapling;
        include includes/hsts;
        include includes/csp_wordpress;
        include includes/favicon;
        include includes/wordpress;
        include includes/php;
        include /srv/www/yes-www.org/nginx.conf;

        location ~ /\.(ht|git) {
                deny all;
        }
}

The content of /etc/nginx/includes/letsencrypt, for example, is:

location /.well-known/acme-challenge/ {
    root /var/www;
    try_files $uri =404;
}

While /etc/nginx/includes/listen-443 consists of:

listen 443 ssl http2;
listen [::]:443 ssl http2;

In this way you can pull out anything that is repeated among your server blocks, and include it wherever you need to do so.

Michael Hampton
  • 244,070
  • 43
  • 506
  • 972