Szybki start
Uruchom reverse proxy przez Docker Compose albo lokalnie z Go. Endpointy, pierwsze requesty i opcjonalne stacki monitoringu.
Docker Compose (najszybciej)#
bash
cd reverse-proxy
ADMIN_TOKEN=change-me docker compose up --build
| Endpoint | Opis |
|---|---|
http://localhost:8080 | Reverse proxy |
http://localhost:8080/healthz | Liveness proxy |
http://localhost:8080/metrics | Metryki Prometheus |
http://localhost:8080/admin/backends | Admin API (wymaga tokenu) |
Opcjonalne stacki:
bash
docker compose --profile monitoring up -d
docker compose --profile redis up -d
monitoring→ Prometheus:9090, Grafana:3000redis→ Redis dla rozproszonego rate limitingu
Lokalny development#
- Przetestuj i zbudujbash
go test ./... go build -o proxy ./cmd/server - Uruchom z konfiguracjąbash
./proxy -config config/config.yaml - Wystaw demo backendy
Domyślna konfiguracja oczekuje backendów nalocalhost:8081ilocalhost:8082:bashdocker run --rm -p 8081:80 nginx:alpine docker run --rm -p 8082:80 nginx:alpine
Pierwsze requesty#
bash
curl http://localhost:8080/healthz
curl http://localhost:8080/
curl -H "Authorization: Bearer change-me" http://localhost:8080/admin/backends
Odpowiedź admin API:
json
{
"backends": [
{ "url": "http://localhost:8081", "healthy": true, "admin_down": false, "in_flight": 0 },
{ "url": "http://localhost:8082", "healthy": true, "admin_down": false, "in_flight": 0 }
]
}
Wyłączenie backendu z rotacji#
bash
curl -X POST -H "Authorization: Bearer change-me" \
http://localhost:8080/admin/backends/0/down
curl -X POST -H "Authorization: Bearer change-me" \
http://localhost:8080/admin/backends/0/up
Sprawdzenie metryk#
bash
curl http://localhost:8080/metrics | grep proxy_requests_total
text
proxy_requests_total{method="GET",route="healthz",backend="",status="200"} 1
proxy_requests_total{method="GET",route="",backend="http://localhost:8081",status="200"} 3
ADMIN_TOKEN jest wymagany
Bez ADMIN_TOKEN admin API nie jest serwowane wcale (fail-closed). Ustaw silny token przez zmienną środowiskową, nie w pliku YAML.
Co dalej?#
- Konfiguracja — pełna referencja
config.yaml. - Load balancing — wybór strategii.
- Monitoring — Prometheus + Grafana.