Nginx-Proxy-Manager hinzugefügt
@@ -0,0 +1,85 @@
|
||||
# Nginx Proxy Manager
|
||||
|
||||
## Warum NPM für den Token?
|
||||
|
||||
Eine Angular-App ist eine reine Client-Side-Anwendung. Alles in `environment.prod.ts` landet nach `ng build` als Klartext in den JS-Bundles — wer DevTools öffnet, sieht den Token.
|
||||
|
||||
**Lösung:** Der Angular-Build spricht nie direkt Directus an. NPM leitet `/api`-Requests weiter und injiziert den Token serverseitig.
|
||||
|
||||
```
|
||||
Browser NPM Directus
|
||||
│ │ │
|
||||
│ GET /api/... │ │
|
||||
│────────────────►│ GET /items/... │
|
||||
│ │ Authorization: Bearer │
|
||||
│ │────────────────────────►│
|
||||
│ │ 200 JSON │
|
||||
│◄────────────────│◄───────────────────────│
|
||||
│ (kein Token │
|
||||
│ sichtbar)
|
||||
```
|
||||
|
||||
## Proxy Host einrichten
|
||||
|
||||
### Details-Tab
|
||||
|
||||
```
|
||||
Domain Names: home.neugasse.lan
|
||||
Scheme: http
|
||||
Forward Hostname/IP: 10.0.0.x (NAS-IP)
|
||||
Forward Port: 9999
|
||||
Cache Assets: ✓
|
||||
Block Common Exploits: ✓
|
||||
```
|
||||
|
||||
### Advanced-Tab — Custom Nginx Configuration
|
||||
|
||||
```nginx
|
||||
# Directus API — Items
|
||||
location /api/items/landingpage {
|
||||
proxy_pass http://directus.neugasse.lan/items/landingpage;
|
||||
proxy_set_header Authorization "Bearer <DIRECTUS_TOKEN>";
|
||||
proxy_set_header Host directus.neugasse.lan;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
# Directus Assets — Bilder
|
||||
location /api/assets/ {
|
||||
proxy_pass http://directus.neugasse.lan/assets/;
|
||||
proxy_set_header Authorization "Bearer <DIRECTUS_TOKEN>";
|
||||
proxy_set_header Host directus.neugasse.lan;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
```
|
||||
|
||||
`<DIRECTUS_TOKEN>` durch den echten Token ersetzen.
|
||||
|
||||
## Token rotieren
|
||||
|
||||
Wenn der Token kompromittiert ist oder erneuert werden muss:
|
||||
|
||||
1. Directus Admin-UI → **Settings** → **Access Tokens**
|
||||
2. Alten Token löschen
|
||||
3. Neuen Token erstellen
|
||||
4. NPM → Proxy Host → **Advanced** → Token ersetzen → **Save**
|
||||
5. Testen:
|
||||
|
||||
```bash
|
||||
curl http://home.neugasse.lan/api/items/landingpage | head -c 100
|
||||
# Erwartet: JSON mit Items
|
||||
```
|
||||
|
||||
## Konfiguration testen
|
||||
|
||||
```bash
|
||||
# Über NPM — Token wird injiziert
|
||||
curl http://home.neugasse.lan/api/items/landingpage | python3 -m json.tool | head -20
|
||||
|
||||
# Direkt an Directus ohne Token — muss 403 zurückgeben
|
||||
curl http://directus.neugasse.lan/items/landingpage
|
||||
# {"errors":[{"message":"You don't have permission..."}]}
|
||||
```
|
||||
|
||||
Wenn Schritt 1 `200` und Schritt 2 `403` liefert, ist der Proxy korrekt konfiguriert.
|
||||
Reference in New Issue
Block a user