README.md aktualisiert
This commit is contained in:
78
README.md
78
README.md
@@ -71,3 +71,81 @@ Dieses Skript automatisiert die Synchronisation von Web-Domains zwischen einem *
|
||||
|
||||
## Nutzung & Parameter
|
||||
Das Skript kann manuell oder via Cronjob aufgerufen werden:
|
||||
|
||||
### Parameter-Referenz
|
||||
|
||||
| Parameter | Beschreibung | Beispiel |
|
||||
| `[DOMAIN]` | Beschränkt die Ausführung auf eine spezifische Domain. | `./sync-ispconfig-proxy.sh example.com` |
|
||||
| `test` | **Dry-Run**: Simuliert alle Schritte ohne Nginx-Configs zu schreiben oder Dienste zu laden. | `./sync-ispconfig-proxy.sh test` |
|
||||
| `force` | Ignoriert den Zeitstempel/ID der letzten Änderung und verarbeitet den gesamten Bestand. | `./sync-ispconfig-proxy.sh force` |
|
||||
| `renew` / `repair` | Erzwingt die Neuausstellung aller betroffenen SSL-Zertifikate (acme.sh --force). | `./sync-ispconfig-proxy.sh renew` |
|
||||
| `-debug` | Aktiviert detaillierte Ausgaben (z.B. SQL-Queries und interne Variablen). | `./sync-ispconfig-proxy.sh -debug` |
|
||||
|
||||
### Kombination & Priorität
|
||||
Die Parameter können kombiniert werden, um das Verhalten präzise zu steuern. Dabei gilt folgende Priorisierung:
|
||||
1. **Sicherheits-Priorität (`test`)**: Der Parameter `test` überschreibt alle schreibenden Aktionen. Auch wenn `force` oder `renew` gesetzt sind, wird im Testmodus nichts am System verändert.
|
||||
2. **Scope-Priorität (`[DOMAIN]` vor `force`)**: Wenn eine spezifische `DOMAIN` angegeben wird, hat diese Vorrang. Der Parameter `force` wird in diesem Fall ignoriert, da das Skript gezielt nur diesen einen Datensatz anspricht.
|
||||
3. **Aktions-Priorität (`renew`)**: Wird `renew` mit `force` kombiniert, werden konsequent für **alle** in ISPConfig aktiven Domains die Zertifikate neu angefordert.
|
||||
|
||||
**Prioritäts-Regel:** 1. `test` (Verhindert jegliche Änderung)
|
||||
2. `[DOMAIN]` (Beschränkt auf ein Ziel, ignoriert globalen `force`)
|
||||
3. `force` (Erfasst alles, falls keine Domain definiert ist)
|
||||
|
||||
---
|
||||
|
||||
# ISPConfig Proxy Cleanup Script (`sync-ispconfig-cleanup.sh`)
|
||||
|
||||
## Beschreibung
|
||||
Dieses Skript dient der Bereinigung des Proxy-Servers von verwaisten Konfigurationsdateien. Es vergleicht die lokal unter `/etc/nginx/conf.d/proxy_generated` vorhandenen `.conf`-Dateien mit den aktiven Domains in der **ISPConfig-Datenbank (Version 3.3.0p3)**. Dateien, die keiner aktiven Domain mehr zugeordnet sind und nicht auf einer geschützten Blocklist stehen, werden entfernt.
|
||||
|
||||
## Kernfunktionen
|
||||
* **Verwaisten-Check**: Identifiziert lokale Nginx-Konfigurationen, die in ISPConfig gelöscht oder deaktiviert wurden.
|
||||
* **Blocklist-Schutz**: Ignoriert Dateien, die in der `proxy_based_server.conf` unter der Sektion `[blocklist]` definiert sind, um manuelle Spezialkonfigurationen zu schützen.
|
||||
* **Sicherheits-Lock**: Verwendet ein Lockfile (`/tmp/restart.cleanproxy.lock`), um gleichzeitige Ausführungen zu verhindern.
|
||||
* **Integritätsprüfung**: Führt nach Löschvorgängen automatisch einen `nginx -t` Syntax-Check durch, bevor der Dienst neu geladen wird.
|
||||
|
||||
## Parameter-Referenz
|
||||
|
||||
| Parameter | Beschreibung | Beispiel |
|
||||
| `-e` / `--execute` | Führt den Löschvorgang und den Nginx-Reload tatsächlich aus (Standard ist Dry-Run). | `./sync-ispconfig-cleanup.sh --execute` |
|
||||
| `-h` / `--help` | Zeigt die Hilfe und Nutzungsinformationen an. | `./sync-ispconfig-cleanup.sh --help` |
|
||||
|
||||
**Hinweis:** Ohne den Parameter `-e` startet das Skript immer im **Dry-Run Modus** und zeigt lediglich an, welche Dateien gelöscht würden, ohne physische Änderungen am Dateisystem vorzunehmen.
|
||||
|
||||
---
|
||||
|
||||
# ISPConfig Proxy Nginx Template (`sync-ispconfig-nginx.tpl`)
|
||||
|
||||
## Beschreibung
|
||||
Dieses Template lagert die Erstellung der Nginx-Konfiguration aus dem Haupt-Sync-Skript aus. Es behebt spezifische Verbindungsprobleme, die bei iOS-Geräten (Safari) und WebDAV-Clients (Nextcloud/ownCloud) in einer IPv4-zu-IPv6-Proxy-Umgebung auftreten.
|
||||
|
||||
## Gelöste Probleme (iOS / Safari & Nextcloud)
|
||||
* **WebDAV-Authentifizierung:** Nginx reicht die Header `Authorization` und `Destination` standardmäßig nicht durch. Dies verhinderte Logins und Dateifreigaben in der iOS-App.
|
||||
* **WebSocket-Protokollinkonsistenz:** Ein hart codiertes Blockieren (`proxy_hide_header Upgrade`) oder fehlerhaftes Erzwingen (`Connection "upgrade"`) führte zu Abbrüchen regulärer HTTP/2-Verbindungen unter Safari.
|
||||
* **Timeouts bei großen Uploads:** Aktives Proxy-Buffering verursachte bei "Chunked Transfers" im Mobilfunknetz Verbindungsabbrüche.
|
||||
* **Bash-Escaping-Fehler:** Die direkte Generierung der Nginx-Direktiven (wie `$host`) im Hauptskript war fehleranfällig.
|
||||
|
||||
## Kernkonfiguration
|
||||
Die implementierten Proxy-Parameter gewährleisten eine transparente Durchreichung an das IPv6-Backend:
|
||||
|
||||
```nginx
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# Dynamischer WebSocket Support
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $http_connection;
|
||||
|
||||
# Transparente Header-Weitergabe für WebDAV
|
||||
proxy_set_header Authorization $http_authorization;
|
||||
proxy_pass_header Authorization;
|
||||
proxy_set_header Destination $http_destination;
|
||||
|
||||
# Optimierung für große Uploads
|
||||
proxy_read_timeout 3600;
|
||||
proxy_send_timeout 3600;
|
||||
proxy_redirect off;
|
||||
proxy_buffering off;
|
||||
|
||||
Reference in New Issue
Block a user