openvibers/openvibe.codes Commits
git.openvibe.codes: Meta's AI crawler gets robots.txt and nothing else (#255)
Changes
@@@ -154,6 +154,14 @@ server {# Forgejo's own Prometheus endpoint stays off the internet (app.ini leaves [metrics] at its default, off).location ~* ^/metrics(/|$) { return 404; }++ # Meta's AI crawler (meta-externalagent) walked every commit of every repository past robots.txt's wildcard rules:++ # 97% of this site's requests, about two a second, and 8% of a core in Forgejo (2026-11-02). robots.txt now names++ # it (Disallow: /, in Forgejo's custom/public/robots.txt); until it reads that, it gets robots.txt and nothing else.++ set $meta_crawler 0;++ if ($http_user_agent ~* "meta-externalagent") { set $meta_crawler 1; }++ if ($uri = /robots.txt) { set $meta_crawler 0; }++ if ($meta_crawler) { return 403; }++location / {client_max_body_size 512m;proxy_request_buffering off;
@@ -154,6 +154,14 @@ server {
@@ -154,6 +154,14 @@ server {
# Forgejo's own Prometheus endpoint stays off the internet (app.ini leaves [metrics] at its default, off).
# Forgejo's own Prometheus endpoint stays off the internet (app.ini leaves [metrics] at its default, off).
location ~* ^/metrics(/|$) { return 404; }
location ~* ^/metrics(/|$) { return 404; }
+ # Meta's AI crawler (meta-externalagent) walked every commit of every repository past robots.txt's wildcard rules:
+ # 97% of this site's requests, about two a second, and 8% of a core in Forgejo (2026-11-02). robots.txt now names
+ # it (Disallow: /, in Forgejo's custom/public/robots.txt); until it reads that, it gets robots.txt and nothing else.
+ set $meta_crawler 0;
+ if ($http_user_agent ~* "meta-externalagent") { set $meta_crawler 1; }
+ if ($uri = /robots.txt) { set $meta_crawler 0; }
+ if ($meta_crawler) { return 403; }
+
location / {
location / {
client_max_body_size 512m;
client_max_body_size 512m;
proxy_request_buffering off;
proxy_request_buffering off;