Se o seu site está atrás da Cloudflare e existe uma regra de rate limiting ativa, essa regra também pode abranger a API REST do WP STAGING. A Cloudflare responde então a esses pedidos com HTTP 429 (Too Many Requests) e as funcionalidades do WP STAGING que dependem da API REST deixam de funcionar. A solução é uma exclusão de uma linha na regra de rate limiting.
Porque é que o rate limiting da Cloudflare quebra a API REST do WP STAGING?
As regras de rate limiting da Cloudflare são avaliadas sobre o pedido recebido, não sobre o plugin que o enviou. Uma regra escrita para todo o seu domínio, ou para um caminho com muito tráfego como /booking, conta portanto também os pedidos internos que o WP STAGING faz à sua própria API REST.
Assim que o contador é excedido, a Cloudflare bloqueia os restantes pedidos correspondentes e devolve HTTP 429. O WP STAGING nunca chega ao WordPress, por isso a funcionalidade que originou a chamada falha ou fica bloqueada.
O seu site é afetado se todas estas condições se verificarem:
- O rate limiting da Cloudflare está ativado na zona.
- Uma regra de rate limiting corresponde ao site WordPress ou a um caminho dentro dele, por exemplo
/booking. - Essa regra não exclui a API REST do WP STAGING.
Que funcionalidades do WP STAGING deixam de funcionar?
A API REST do WP STAGING é usada por várias funcionalidades, entre elas:
- Tarefas em segundo plano
- Remote Sync
- Magic Login
- Atualização automática de plugins
- Outras funcionalidades baseadas na API REST
Se estes pedidos forem limitados, falham com HTTP 429 e a funcionalidade que os despoletou não consegue concluir.
Como excluo a API REST do WP STAGING do rate limiting da Cloudflare?
Edite a regra de rate limiting para que deixe de corresponder aos pedidos à API REST do WP STAGING.
Passo 1: abra as suas regras de rate limiting
No painel da Cloudflare, selecione a sua conta e depois o seu domínio, vá a Security e abra Security rules. As suas regras de rate limiting estão listadas aí.
Passo 2: edite a regra que abrange o seu site WordPress
Abra a regra que abrange o site WordPress ou o caminho onde aparecem as respostas 429.
Passo 3: adicione a exclusão à expressão da regra
Acrescente esta condição à expressão de correspondência da regra:
and not http.request.uri.query contains "/wpstg/v1"
Uma expressão completa para uma regra que protege /booking fica assim:
(http.host eq "example.com" and starts_with(http.request.uri.path, "/booking")) and not http.request.uri.query contains "/wpstg/v1"
Passo 4: publique a regra
Guarde e publique. Pedidos como o seguinte deixam de ser limitados, enquanto o resto do site continua protegido:
?rest_route=/wpstg/v1/check_magic_login
Nota:
wpstg/v1faz parte da query string, não do caminho do URL. O WP STAGING chama a sua API REST através da forma?rest_route=, por isso usehttp.request.uri.queryem vez dehttp.request.uri.pathna exclusão.
FAQ
Porque é que a exclusão usa http.request.uri.query e não http.request.uri.path?
O WP STAGING constrói os seus URLs REST como https://example.com/?rest_route=/wpstg/v1/<endpoint>. O namespace wpstg/v1 aparece portanto na query string. Uma regra que avalia http.request.uri.path nunca o veria e a exclusão não teria qualquer efeito.
Esta exclusão enfraquece a proteção do meu site?
Isenta apenas os pedidos cuja query string contém /wpstg/v1. Todos os outros pedidos ao seu domínio continuam a contar para a regra de rate limiting.
Também vejo erros 429 em /wp-json/wpstg/v1/. E agora?
Algumas configurações acedem à API REST através da forma com permalink. Nesse caso, adicione uma segunda condição para o caminho:
and not starts_with(http.request.uri.path, "/wp-json/wpstg/v1/")
O 429 pode ter outra causa além da Cloudflare?
Sim. Web application firewalls, rate limiting ao nível do alojamento e plugins de segurança também podem devolver HTTP 429. Verifique os registos do servidor e dos plugins se os erros continuarem depois de publicar a exclusão na Cloudflare.
Como confirmo que a correção funcionou?
Volte a acionar a funcionalidade que falhava, por exemplo abra um link de Magic Login ou inicie um Remote Sync, e consulte o registo Security Events da Cloudflare. Os pedidos que contêm /wpstg/v1 já não devem mostrar uma ação de bloqueio por rate limiting.