server { listen {{ data.ipv4 !== '*' ? data.ipv4 + ':' : '' }}80; listen [{{ data.ipv6 }}]:80; listen {{ data.ipv4 !== '*' ? data.ipv4 + ':' : '' }}443 ssl{{ isHTTP2() ? ' http2' : '' }}; listen [{{ data.ipv6 }}]:443 ssl{{ isHTTP2() ? ' http2' : '' }}; server_name {{ isWWW() ? 'www.' : '' }}{{ domain() }}; set $base {{ data.path ? data.path : '/var/www/' + domain() }}; root $base{{ data.document_root }}; root /var/www/{{ domain() }}{{ data.document_root }}; index {{ data.index ? data.index : 'index.html' + (isPHP() ? ' index.php' : '') }}; # SSL ssl_certificate {{ sslCertificate() }}; ssl_certificate_key {{ sslCertificateKey() }}; ssl_trusted_certificate /etc/letsencrypt/live/{{ domain() }}/fullchain.pem; # index index {{ isIndexHtml() ? 'index.html ' : '' }}index.php; # $uri{{ isIndexHtml() ? ', index.html' : '' }}{{ isIndexPhp() ? ', index.php' : '' }} location / { try_files $uri $uri/ {{ isIndexHtml() ? '/index.html' : '' }}{{ isIndexHtml() && isIndexPhp() ? ' ' : '' }}{{ isIndexPhp() ? '/index.php?$query_string' : '' }}; } include _general.conf; include _wordpress.conf; include _php.conf; } # CDN server { listen {{ data.ipv4 !== '*' ? data.ipv4 + ':' : '' }}{{ isHTTPS() ? '443 ssl' : '80' }}{{ isHTTP2() ? ' http2' : '' }}; listen [{{ data.ipv6 }}]:{{ isHTTPS() ? '443 ssl' : '80' }}{{ isHTTP2() ? ' http2' : '' }}; server_name cdn.{{ domain() }}; root /var/www/{{ domain() }}{{ data.document_root }}; access_log off; # SSL ssl_certificate {{ sslCertificate() }}; ssl_certificate_key {{ sslCertificateKey() }}; ssl_trusted_certificate /etc/letsencrypt/live/{{ domain() }}/fullchain.pem; # disable access_log access_log off; # gzip gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types {{ gzipTypes }}; # allow safe files location ~* \.(?:{{ extensions.assets }}|{{ extensions.fonts }}|{{ extensions.svg }}|{{ extensions.images }}|{{ extensions.audio }}|{{ extensions.video }}|{{ extensions.docs }})$ { add_header Access-Control-Allow-Origin "*"; add_header Cache-Control "public"; expires 30d; } # deny everything else location / { deny all; } } # {{ isWWW() ? 'non-www, ' : '' }}subdomains redirect server { listen {{ data.ipv4 !== '*' ? data.ipv4 + ':' : '' }}{{ isHTTPS() ? '443 ssl' : '80' }}{{ isHTTP2() ? ' http2' : '' }}; listen [{{ data.ipv6 }}]:{{ isHTTPS() ? '443 ssl' : '80' }}{{ isHTTP2() ? ' http2' : '' }}; server_name {{ isWWW() ? ('.' + domain()) : ('*.' + domain()) }}; # SSL ssl_certificate {{ sslCertificate() }}; ssl_certificate_key {{ sslCertificateKey() }}; ssl_trusted_certificate /etc/letsencrypt/live/{{ domain() }}/fullchain.pem; return 301 https://{{ isWWW() ? 'www.' : '' }}{{ domain() }}$request_uri; } # HTTP redirect server { listen {{ data.ipv4 !== '*' ? data.ipv4 + ':' : '' }}80; listen [{{ data.ipv6 }}]:80; server_name .{{ domain() }}; include _letsencrypt.conf; location / { return 301 https://{{ isWWW() ? 'www.' : '' }}{{ domain() }}$request_uri; } return 301 https://{{ isWWW() ? 'www.' : '' }}{{ domain() }}$request_uri; }