nastavitve:cloudflare_wordpress_rest_api_n8n
Table of Contents
Cloudflare + WordPress REST API + n8n integracija
🎯 Namen dokumenta
Ta dokument opisuje:
- kako varno omogočiti WordPress REST API za n8n
- kako blokirati javni REST API dostop
- kako uporabiti Cloudflare WAF + IP allowlist
- kako se izogniti Cloudflare Access / Zero Trust
- preverjeno delujočo konfiguracijo iz produkcije
Velja za
- WordPress
- n8n
- Cloudflare (Free plan zadostuje)
- REST API integracije brez browserja
- machine-to-machine dostop
🧠 Povzetek problema (TL;DR)
Če uporabljaš:
- Cloudflare
- WordPress REST API
- n8n ali drugo avtomatizacijo
potem Cloudflare privzeto:
- blokira REST API z JS Challenge
- sproža Bot Fight Mode
- vrača 403 Forbidden
- zahteva Access token, ki za REST API NI primeren
⚠️ REST API ni browser in ne zna reševati Cloudflare izzivov.
Rešitev je:
- IP allowlist
- Cloudflare Custom Rules (Allow + Block)
- WordPress Application Password
- Basic Auth
- brez Zero Trust
Končna arhitektura
n8n (statičen IP)
- > Cloudflare WAF (Custom Rules)
- > WordPress REST API (/wp-json/)
1️⃣ WordPress – Application Password
V WordPress Admin panelu:
- Users
- izberi uporabnika (npr. automation_n8n)
- Application Passwords
- Create new password
Shrani:
- WordPress username
- Application Password
Opomba:
- uporablja se Basic Auth
- ne JWT
- ne OAuth
2️⃣ n8n – preveri izhodni IP
V n8n ustvari HTTP Request node:
Method: GET URL: https://api.ipify.org?format=json Authentication: None
Rezultat:
{
"ip": "49.12.184.65"
}
Ta IP bo uporabljen v Cloudflare pravilih.
3️⃣ Cloudflare – Global Security Level
Cloudflare Dashboard:
- Security
- Settings
Nastavi:
Security Level = Low
Razlog:
- Medium / High sprožata JS Challenge
- REST API tega ne zna obdelati
4️⃣ Cloudflare – Custom Rule (ALLOW + SKIP)
Cloudflare:
- Security
- Security rules
- Custom rules
- Create rule
Ime pravila:
Allow WordPress REST API
Expression:
starts_with(http.request.uri.path, "/wp-json/") and (ip.src eq 49.12.184.65 or ip.src eq 86.61.31.249)
Action:
Skip
WAF components to skip:
- All managed rules
- All rate limiting rules
- Super Bot Fight Mode rules
Rule order:
First
To pravilo:
- dovoli REST API
- izključi vse Cloudflare zaščite za dovoljene IP-je
5️⃣ Cloudflare – Custom Rule (BLOCK public REST)
Ustvari drugo pravilo.
Ime:
Block public WordPress REST
Expression:
starts_with(http.request.uri.path, "/wp-json/") and not (ip.src eq 49.12.184.65 or ip.src eq 86.61.31.249)
Action:
Block
Rule order:
- After: Allow WordPress REST API
To pravilo:
- blokira javni REST API
- prepreči brute-force in scan napade
6️⃣ Cloudflare – Zero Trust / Access
Cloudflare:
- Zero Trust
- Access
- Applications
Stanje:
NO APPLICATIONS
Ne uporabljamo:
- Access Applications
- Service Tokens
- Access Policies
- Identity Providers
Razlog:
- REST API = machine-to-machine
- IP allowlist + Basic Auth je stabilnejši
7️⃣ Testiranje v browserju
Iz dovoljenega IP-ja:
https://example.com/wp-json/
Pričakovano:
- JSON z WordPress podatki
Iz nedovoljenega IP-ja:
- Cloudflare block page
- “Sorry, you have been blocked”
8️⃣ Testiranje v n8n
HTTP Request node:
Method: GET URL: https://example.com/wp-json/wp/v2/users/me Authentication: Basic Auth Username: WP user Password: Application Password
Pričakovano:
- HTTP 200
- JSON odgovor
- brez Cloudflare challenge
🔐 Varnostna politika
| Element | Status |
|---|---|
| REST API javno dostopen | ❌ |
| IP allowlist | ✅ |
| Basic Auth | ✅ |
| WAF bypass samo za n8n | ✅ |
| Cloudflare Zero Trust | ❌ |
⚠️ Pogoste napake
- Security Level = High
- uporaba Cloudflare Access za REST API
- manjkajoč “Skip”
- napačen vrstni red pravil
- JS / Managed Challenge na /wp-json/
- testiranje iz napačnega IP-ja
✅ Status
- Produkcijsko preverjeno: DA
- Stabilno: DA
- Primerno za wiki dokumentacijo: DA
🧩 Opomba
Če se IP n8n spremeni:
- posodobi Cloudflare Custom Rules
- ni potrebe po spremembi WordPress konfiguracije
nastavitve/cloudflare_wordpress_rest_api_n8n.txt · Last modified: by sistemc
