server {
    listen       80;
    listen       [::]:80;
    server_name  {{ public_domain }} www.{{ public_domain }};
    root         /srv/public_html;

    access_log   /var/log/nginx/{{ public_domain }}/access.log reduced;
    access_log   /var/log/nginx/{{ public_domain }}/access.log.json json_reduced;
    error_log    /var/log/nginx/{{ public_domain }}/error.log;

    include snippets/letsencrypt.conf;

    location / {
        access_log off;
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  {{ public_domain }} www.{{ public_domain }};
    root         /srv/public_html;

    access_log   /var/log/nginx/{{ public_domain }}/access.log reduced;
    access_log   /var/log/nginx/{{ public_domain }}/access.log.json json_reduced;
    error_log    /var/log/nginx/{{ public_domain }}/error.log;

    ssl_certificate      /etc/letsencrypt/live/{{ public_domain }}/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/{{ public_domain }}/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/{{ public_domain }}/chain.pem;

    location ~ ^/~(?<user>[A-Za-z0-9]+)(?<path>/.*)? {
        alias /home/$user/public_html$path;
        index index.html index.htm;
        autoindex on;

        location ~ /(PKGBUILD|MKPKG)$ {
            default_type text/plain;
            charset utf-8;
        }
    }
}
