configuration/configs/site.config.conf

configuration/configs/site.config.conf is a file in Bane's Lab Server. 338 lines of code and 0 definitions.

map $remote_addr $banes_lab_client {
    "~^(?P<net>\d+\.\d+\.\d+)\.\d+$"                       $net.0;
    "~^(?P<net>[0-9a-fA-F]*:[0-9a-fA-F]*:[0-9a-fA-F]*):"   $net::;
    default                                                "-";
}

map $http_accept $banes_lab_accepts_json {
    default             0;
    ~application/json   1;
}

map "$banes_lab_accepts_json$uri" $banes_lab_json_route {
    default        0;
    "~^1/[^.]*$"   1;
}

map "$accepts_markdown$request_uri" $banes_lab_markdown_404 {
    default                 /404.html;
    "~^1"                   @markdown404;
    "~^0[^?]*\.md(\?|$)"    @markdown404;
}

js_engine qjs;
js_path "/etc/nginx/js/";
js_import banes_lab_query from catalog.js;
js_set $banes_lab_markdown_canonical banes_lab_query.markdownCanonical;

log_format banes_lab_shortened '$banes_lab_client - $remote_user [$time_local] '
                               '"$request" $status $body_bytes_sent '
                               '"$http_referer" "$http_user_agent" '
                               'rt=$request_time uct="$upstream_connect_time" '
                               'uht="$upstream_header_time" urt="$upstream_response_time" '
                               'rid=$request_id';

server {
    server_name banes-lab.com;

    access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;
    error_log /var/log/nginx/banes_lab_error.log warn;

    brotli on;
    brotli_comp_level 5;
    brotli_types text/plain text/css text/xml text/markdown application/javascript application/json application/xml application/xml+rss application/manifest+json image/svg+xml;
    gzip_types text/plain text/css text/xml text/markdown text/javascript application/json application/javascript application/x-javascript application/xml application/xml+rss application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
    gzip_proxied off;

    root /var/www/banes-lab/web;
    error_page 404 /404.html;

    location /assets/ {
        root /var/www/banes-lab/web;
        try_files $uri =404;
        brotli_static on;
        gzip_static on;
        access_log off;

        add_header Cache-Control "no-cache" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
    }

    location /static/ {
        root /var/www/banes-lab/web;
        try_files $uri =404;
        brotli_static on;
        gzip_static on;
        access_log off;

        add_header Cache-Control "no-cache" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
    }

    location ~ "^/assets/[A-Za-z0-9_-]{8}\.[a-z0-9]+(\.br|\.gz)?$" {
        root /var/www/banes-lab/web;
        try_files $uri =404;
        brotli_static on;
        gzip_static on;
        access_log off;

        add_header Cache-Control "public, max-age=31536000, immutable" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
    }

    location = /json {
        rewrite ^ /json/api last;
    }

    location = /json/ {
        rewrite ^ /json/api last;
    }

    location ^~ /json/ {
        root /var/www/banes-lab/web;
        rewrite ^(/json/.+)/$ $1 last;
        rewrite ^/json/(records|source)(/[^/]+)?$ /json/api/$1$2 last;
        if ($request_method = OPTIONS) {
            add_header Access-Control-Allow-Origin "*" always;
            add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always;
            add_header Access-Control-Allow-Headers "Accept, If-None-Match, Range" always;
            add_header Access-Control-Max-Age "86400" always;
            return 204;
        }
        if ($args != "") {
            rewrite ^ /q-static last;
        }
        try_files $uri $uri.json =404;
        default_type application/json;
        brotli_static on;
        gzip_static on;
        error_page 404 = @json404;

        add_header Access-Control-Allow-Origin "*" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
        add_header Vary "Accept" always;
    }

    location @json404 {
        js_content banes_lab_query.missing;

        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
    }

    location = /q-static {
        internal;
        js_content banes_lab_query.staticQuery;

        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
    }

    location = /q {
        if ($request_method = OPTIONS) {
            add_header Access-Control-Allow-Origin "*" always;
            add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always;
            add_header Access-Control-Allow-Headers "Accept" always;
            add_header Access-Control-Max-Age "86400" always;
            return 204;
        }
        js_content banes_lab_query.q;

        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
    }

    location = /api/health {
        default_type application/json;
        return 200 '{"status":"ok"}';

        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
        add_header Cache-Control "no-store" always;
    }

    location ~ \.md$ {
        root /var/www/banes-lab/web;
        if ($request_method = OPTIONS) {
            add_header Access-Control-Allow-Origin "*" always;
            add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always;
            add_header Access-Control-Allow-Headers "Accept, If-None-Match, Range" always;
            add_header Access-Control-Max-Age "86400" always;
            return 204;
        }
        try_files $uri =404;
        default_type text/markdown;
        charset utf-8;
        charset_types text/markdown;
        brotli_static on;
        gzip_static on;
        error_page 404 $banes_lab_markdown_404;

        add_header Access-Control-Allow-Origin "*" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
        add_header Vary "Accept" always;
        add_header Link $banes_lab_markdown_canonical;
    }

    location @markdown404 {
        default_type text/markdown;
        charset utf-8;
        charset_types text/markdown;
        return 404 'Nothing is served at this address. Every address the site publishes is listed at https://banes-lab.com/api.md.\n';

        add_header Access-Control-Allow-Origin "*" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
        add_header Vary "Accept" always;
    }

    location ~ \.txt$ {
        root /var/www/banes-lab/web;
        try_files $uri =404;
        default_type text/plain;
        charset utf-8;
        brotli_static on;
        gzip_static on;
        error_page 404 @text404;

        add_header Access-Control-Allow-Origin "*" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
    }

    location @text404 {
        default_type text/plain;
        charset utf-8;
        return 404 'Nothing is served at this address. Every address the site publishes is listed at https://banes-lab.com/api.md.\n';

        add_header Access-Control-Allow-Origin "*" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
    }

    location ~ \.json$ {
        root /var/www/banes-lab/web;
        try_files $uri =404;
        default_type application/json;
        brotli_static on;
        gzip_static on;
        error_page 404 = @json404;

        add_header Access-Control-Allow-Origin "*" always;
        add_header tdm-reservation "0" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "cross-origin" always;
        add_header Cache-Control "no-cache" always;
    }

    location / {
        limit_conn conn_limit 50;

        root /var/www/banes-lab/web;
        rewrite ^/(.+)/$ /$1 permanent;
        if ($arg_tab != "") {
            return 301 $uri$legacy_tab$legacy_section;
        }
        if ($markdown_route) {
            rewrite ^/$ /index.md last;
            rewrite ^(.+)$ $1.md last;
        }
        if ($banes_lab_json_route) {
            rewrite ^/$ /json/home last;
            rewrite ^(.+)$ /json$1 last;
        }
        try_files $uri $uri.html $uri/index.html @markdown;
        brotli_static on;
        gzip_static on;
        brotli off;
        gzip off;

        sub_filter "52f39ac235b0d7d70110a13ecd18d49a" $request_id;
        sub_filter_once off;

        add_header tdm-reservation "0" always;

        add_header Content-Security-Policy "default-src 'none'; script-src 'nonce-$request_id' 'strict-dynamic' 'self'; style-src 'nonce-$request_id' 'self'; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; object-src 'none';" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header Referrer-Policy "same-origin" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Frame-Options "DENY" always;
        add_header X-XSS-Protection "0" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-DNS-Prefetch-Control "off" always;
        add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=(), interest-cohort=()" always;
        add_header Cross-Origin-Opener-Policy "same-origin" always;
        add_header Cross-Origin-Embedder-Policy "credentialless" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
        add_header Cache-Control "no-cache" always;
        add_header Vary "Accept" always;
    }

    location @markdown {
        rewrite ^(.+)$ $1.md last;
    }

    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    http2 on;

    ssl_certificate /etc/letsencrypt/live/banes-lab.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/banes-lab.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/banes-lab.com/chain.pem;
}

server {
    listen [::]:443 ssl;
    listen 443 ssl;
    http2 on;
    server_name www.banes-lab.com;
    access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;

    ssl_certificate /etc/letsencrypt/live/banes-lab.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/banes-lab.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/banes-lab.com/chain.pem;

    return 301 https://banes-lab.com$request_uri;
}

server {
    listen [::]:443 ssl;
    listen 443 ssl;
    http2 on;
    server_name mta-sts.banes-lab.com;
    access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;

    ssl_certificate /etc/letsencrypt/live/banes-lab.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/banes-lab.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/banes-lab.com/chain.pem;

    root /var/www/banes-lab/web;
    error_page 404 /404.html;

    location = /.well-known/mta-sts.txt {
        default_type text/plain;
        return 200 "version: STSv1\nmode: enforce\nmx: fwd1.porkbun.com\nmx: fwd2.porkbun.com\nmax_age: 86400\n";

        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cache-Control "no-cache" always;
    }

    location = /404.html {
        internal;
    }

    location /assets/ {
        try_files $uri =404;
        brotli_static on;
        gzip_static on;
        access_log off;

        add_header Cache-Control "public, max-age=31536000, immutable" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
    }

    location /static/ {
        try_files $uri =404;
        brotli_static on;
        gzip_static on;
        access_log off;

        add_header Cache-Control "no-cache" always;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
    }

    location / {
        return 404;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name banes-lab.com www.banes-lab.com mta-sts.banes-lab.com;
    access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;
    return 301 https://banes-lab.com$request_uri;
}