Grafana als weiterer Pfad - und "proxy check", damit 502 nicht raten heisst
Ob ein Dienst unter einem Pfad liegen kann, entscheidet der Dienst, nicht der Proxy: er muss den Praefix kennen und in jede erzeugte Adresse einsetzen. Checkmk kann das von Haus aus, die Oberflaeche des Proxy Managers gar nicht - Grafana kann es, wenn man es ihm sagt: GF_SERVER_ROOT_URL=https://<ip>/grafana/ GF_SERVER_SERVE_FROM_SUB_PATH=true Damit setzt Grafana <base href="/grafana/"> in seine Seiten. An Grafana 13.0.2 hinter dem Proxy Manager gemessen, ueber die IP ohne SNI: /grafana/ liefert 302 auf /grafana/login, die Anmeldeseite 200, die Dateien unter /grafana/public/... ebenfalls 200, und POST /grafana/login meldet 200. Ohne die beiden Zeilen leitet Grafana auf /login um - also auf die Wurzel, wo etwas anderes liegt. Neu ist ausserdem "proxy check". Es fragt jedes Ziel eines Proxy-Hosts AUS DEM PROXY-CONTAINER HERAUS ab, denn von dort baut nginx die Verbindung auf: PFAD ZIEL ANTWORT / http://127.0.0.1:81 HTTP 200 /grafana http://127.0.0.1:3000 HTTP 302 /cmk http://127.0.0.1:9999 nicht erreichbar Damit faellt ein Tippfehler in der Zieladresse auf, bevor der Browser 502 zeigt - der Anlass war genau so einer. In der Oberflaeche liegt das unter Proxy-Hosts > "Ziele pruefen". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1228,6 +1228,7 @@ erzwingen, HTTP/2 und Websockets einschalten und den empfohlenen
|
||||
| `proxy default --domain X` | HTTPS über die blanke IP ermöglichen (spiegelt X in einen Standard-Server) |
|
||||
| `proxy default --off` | diese Spiegelung wieder entfernen |
|
||||
| `proxy admin --domain X` / `--root` | Adminoberfläche erreichbar machen – per Name oder über die Wurzel |
|
||||
| `proxy check` | antwortet hinter jedem Pfad etwas? (aus dem Proxy-Container geprüft) |
|
||||
| `proxy reload` | nginx die Konfiguration neu einlesen lassen – ohne Unterbrechung |
|
||||
| `proxy restart` | den Proxy-Manager-Container neu starten |
|
||||
|
||||
@@ -1677,6 +1678,75 @@ bei Variante A. Ohne Angabe zeigt `proxy admin` den Stand.
|
||||
In der Oberfläche liegt beides unter **Proxy-Hosts → Adminoberfläche erreichbar
|
||||
machen**.
|
||||
|
||||
### 10.12 Weitere Dienste dazunehmen – Beispiel Grafana
|
||||
|
||||
Mit einem einzigen freien Port lassen sich mehrere Dienste über Pfade
|
||||
auseinanderhalten:
|
||||
|
||||
```
|
||||
https://172.0.250.82/ Adminoberfläche des Proxy Managers
|
||||
https://172.0.250.82/cmk/ Checkmk
|
||||
https://172.0.250.82/grafana/ Grafana
|
||||
```
|
||||
|
||||
Ob ein Dienst das mitmacht, hängt an ihm selbst – nicht am Proxy. Er muss
|
||||
wissen, dass er unter einem Präfix liegt, und ihn in jede Adresse einsetzen,
|
||||
die er erzeugt. Checkmk kann das von Haus aus (der Site-Pfad *ist* der
|
||||
Präfix), die Oberfläche des Proxy Managers kann es gar nicht
|
||||
([Kapitel 10.11](#1011-die-adminoberfläche-des-proxy-managers-erreichbar-machen)),
|
||||
**Grafana kann es, wenn man es ihm sagt**:
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml, Dienst grafana
|
||||
environment:
|
||||
GF_SERVER_ROOT_URL: "https://172.0.250.82/grafana/"
|
||||
GF_SERVER_SERVE_FROM_SUB_PATH: "true"
|
||||
```
|
||||
|
||||
Gleichwertig in der `grafana.ini`:
|
||||
|
||||
```ini
|
||||
[server]
|
||||
root_url = https://172.0.250.82/grafana/
|
||||
serve_from_sub_path = true
|
||||
```
|
||||
|
||||
Damit setzt Grafana ein `<base href="/grafana/" />` in seine Seiten, und alle
|
||||
Dateien werden relativ dazu geladen. Ohne die beiden Zeilen leitet es auf
|
||||
`/login` um – also auf die Wurzel, wo etwas ganz anderes liegt. Gemessen:
|
||||
|
||||
| Grafana-Einstellung | `/grafana/login` | Dateien der Seite |
|
||||
|---|---|---|
|
||||
| ohne `serve_from_sub_path` | 302 auf `/login` | gehen an die Wurzel |
|
||||
| mit `root_url` + `serve_from_sub_path` | 200 | `/grafana/public/…` → 200 |
|
||||
|
||||
Auf der Proxy-Seite ist es dann ein Pfad mehr:
|
||||
|
||||
```bash
|
||||
./scripts/cmk-manage.sh proxy edit --id 1 --location /grafana=127.0.0.1:3000
|
||||
./scripts/cmk-manage.sh proxy default --domain <name> --restart # falls eingerichtet
|
||||
./scripts/cmk-manage.sh proxy check
|
||||
```
|
||||
|
||||
`proxy check` fragt jedes Ziel **aus dem Proxy-Container heraus** ab – von dort
|
||||
baut nginx die Verbindung auf, nicht von deinem Arbeitsplatz:
|
||||
|
||||
```
|
||||
Proxy-Host 1 stack.local
|
||||
PFAD ZIEL ANTWORT
|
||||
/ http://127.0.0.1:81 HTTP 200
|
||||
/grafana http://127.0.0.1:3000 HTTP 302
|
||||
/cmk http://127.0.0.1:9999 nicht erreichbar
|
||||
```
|
||||
|
||||
Genau so findet man einen Tippfehler in der Zieladresse, bevor der Browser
|
||||
`502 Bad Gateway` zeigt. In der Oberfläche liegt das unter **Proxy-Hosts →
|
||||
Ziele prüfen**.
|
||||
|
||||
> Port **3000 bleibt in der Firewall zu**. Grafana wird ausschließlich über den
|
||||
> Proxy erreicht, genau wie Checkmk auf 5000. `firewall close` bietet einen
|
||||
> versehentlich geöffneten Port wieder an.
|
||||
|
||||
---
|
||||
|
||||
## 11. Proxy Manager lokal einrichten (Terminal-Browser)
|
||||
|
||||
Reference in New Issue
Block a user