mmm, blocking everything not http/2.0 is also blocking legit browser, while blocking http/1.0 does not block bots (at least not ChatGPT); blocking non-browsers with $http_sec_fetch_mode works as expected.
server {
listen 443 ssl backlog=1536 so_keepalive=58s:58s:5 deferred reuseport;
http2 on;
# [snip...]
This is on nginx/1.26.2. Older versions looked a little different.