worker_processes  1;

events {
    worker_connections  1024;
}

http {
    # Cloudflare real IP
    set_real_ip_from 173.245.48.0/20;
    set_real_ip_from 103.21.244.0/22;
    set_real_ip_from 103.22.200.0/22;
    set_real_ip_from 103.31.4.0/22;
    set_real_ip_from 141.101.64.0/18;
    set_real_ip_from 108.162.192.0/18;
    set_real_ip_from 190.93.240.0/20;
    set_real_ip_from 188.114.96.0/20;
    set_real_ip_from 197.234.240.0/22;
    set_real_ip_from 198.41.128.0/17;
    set_real_ip_from 162.158.0.0/15;
    set_real_ip_from 104.16.0.0/13;
    set_real_ip_from 104.24.0.0/14;
    set_real_ip_from 172.64.0.0/13;
    set_real_ip_from 131.0.72.0/22;
    real_ip_header CF-Connecting-IP;

    gzip off;

    server {
        listen 80 default_server;
        server_name _;

        set $client_ip $remote_addr;

        location / {
            set $is_cli 0;
            if ($http_user_agent ~* "(curl|wget|python|httpclient)") {
                set $is_cli 1;
            }

            if ($is_cli = 1) {
                add_header Content-Type text/plain always;
                return 200 "$remote_addr | $time_iso8601\n";
            }

            root /usr/share/nginx/html;
            index index.html;
            try_files $uri /index.html;

            sub_filter_once off;
            sub_filter '__CLIENT_IP__' $client_ip;
            sub_filter '__SERVER_TIME__' $time_iso8601;
        }
    }

    server {
        listen 443 ssl default_server;
        server_name _;

        ssl_certificate     /etc/ssl/nginx-selfsigned.crt;
        ssl_certificate_key /etc/ssl/nginx-selfsigned.key;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        set $client_ip $remote_addr;

        location / {
            set $is_cli 0;
            if ($http_user_agent ~* "(curl|wget|python|httpclient)") {
                set $is_cli 1;
            }

            if ($is_cli = 1) {
                add_header Content-Type text/plain always;
                return 200 "$remote_addr | $time_iso8601\n";
            }

            root /usr/share/nginx/html;
            index index.html;
            try_files $uri /index.html;

            sub_filter_once off;
            sub_filter '__CLIENT_IP__' $client_ip;
            sub_filter '__SERVER_TIME__' $time_iso8601;
        }
    }
}
