Skip to content

Commit adbaf5f

Browse files
committed
update proxy doc 2
1 parent ec76644 commit adbaf5f

2 files changed

Lines changed: 53 additions & 10 deletions

File tree

docs/installation/architecture-de-securite.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ Mettez vos certificats dans ./certificates
7373
## Serveur orchestrator (Méthode par reverse proxy)
7474

7575
::: tip Configuration WebSocket (Socket.IO)
76-
Le frontal d'administration utilise Socket.IO sur `/api/socket.io` (temps réel : jobs, backends, cron). Le reverse-proxy doit supporter l'upgrade WebSocket et router **tout** le trafic vers le port Nuxt (`3000`), pas vers l'API (`4000`). Voir le guide détaillé : [Reverse-proxy — orchestrator](./reverse-proxy-orchestrator.md).
76+
Le frontal d'administration utilise Socket.IO sur `/api/socket.io` (temps réel : jobs, backends, cron). Le reverse-proxy Nginx doit inclure `proxy_http_version 1.1`, `Upgrade` et `Connection` **dans** le bloc `location /` qui pointe vers Nuxt (`3000`), pas vers l'API (`4000`). Sans cela : `WebSocket connection to 'wss://…/api/socket.io/…' failed`. Guide détaillé : [Reverse-proxy — orchestrator](./reverse-proxy-orchestrator.md).
7777
:::
7878

7979
Un script est disponible pour l installation du reverse sur la machine docker hébergant l'orchestrator et le frontal de d'administration

docs/installation/reverse-proxy-orchestrator.md

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,11 @@ En production, **ne pas** définir `NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY=true` : c
5252

5353
## Nginx
5454

55-
### Configuration recommandée
55+
### Exemple complet (validé en production)
5656

57-
Utiliser une `map` pour gérer correctement l'en-tête `Connection` lors des upgrades WebSocket :
57+
Redirection HTTP → HTTPS, un seul vhost `443` vers Nuxt `:3000` (REST + WebSocket Socket.IO).
58+
59+
La `map` se déclare **au niveau `http`** (dans `nginx.conf` ou un fichier inclus) :
5860

5961
```nginx
6062
map $http_upgrade $connection_upgrade {
@@ -63,7 +65,13 @@ map $http_upgrade $connection_upgrade {
6365
}
6466
6567
server {
66-
listen 443 ssl http2;
68+
listen 80;
69+
server_name sesame.example.com;
70+
return 301 https://$host$request_uri;
71+
}
72+
73+
server {
74+
listen 443 ssl;
6775
server_name sesame.example.com;
6876
6977
# ssl_certificate ...
@@ -89,11 +97,30 @@ server {
8997
}
9098
```
9199

92-
Sur l'hôte (sans réseau Docker `reverse`), remplacer l'upstream par `http://127.0.0.1:3000` ou le port publié (ex. `3002`).
100+
Sur l'hôte (sans réseau Docker `reverse`), remplacer `http://sesame-orchestrator:3000` par `http://127.0.0.1:3000` ou le port publié (ex. `3002`).
93101

94-
### Variante minimale
102+
Après modification :
95103

96-
Équivalent des trois directives WebSocket courantes :
104+
```bash
105+
nginx -t && nginx -s reload
106+
```
107+
108+
### Erreurs fréquentes
109+
110+
::: danger Configuration incomplète
111+
Sans `proxy_http_version 1.1` et les en-têtes `Upgrade` / `Connection` **à l'intérieur** du bloc `location /`, la console affiche :
112+
113+
`WebSocket connection to 'wss://…/api/socket.io/…' failed`
114+
:::
115+
116+
| Piège | Conséquence | Correction |
117+
| --- | --- | --- |
118+
| `proxy_set_header` **en dehors** de `location /` | En-têtes non appliqués au proxy | Tout regrouper dans `location /` |
119+
| Pas de directives WebSocket | Échec WS, repli polling ou erreurs répétées | Ajouter `proxy_http_version 1.1`, `Upgrade`, `Connection` |
120+
| Vhost `listen 4000` vers l'API | Exposition inutile, routage confus | Un seul point d'entrée : `443` → Nuxt `:3000` |
121+
| `proxy_pass` vers le port `4000` | Socket.IO et auth IP cassés | Cibler `sesame-orchestrator:3000` uniquement |
122+
123+
### Variante minimale
97124

98125
```nginx
99126
location / {
@@ -112,7 +139,7 @@ location / {
112139
| --- | --- |
113140
| `proxy_http_version 1.1` | Requis pour l'upgrade WebSocket |
114141
| `proxy_set_header Upgrade $http_upgrade` | Transmet la demande d'upgrade du navigateur |
115-
| `proxy_set_header Connection "upgrade"` | Maintient le tunnel WebSocket vers Nuxt |
142+
| `proxy_set_header Connection $connection_upgrade` | Maintient le tunnel WebSocket vers Nuxt |
116143

117144
---
118145

@@ -189,7 +216,23 @@ Après mise en place :
189216

190217
| Symptôme | Cause probable | Action |
191218
| --- | --- | --- |
219+
| `WebSocket connection to 'wss://…/api/socket.io/…' failed` | Directives WS absentes ou hors `location` | Voir [Erreurs fréquentes](#erreurs-fréquentes) |
192220
| `Invalid frame header` (console navigateur) | Upgrade WebSocket non proxifié | Vérifier les directives WS ci-dessus |
193221
| Socket.IO reste en `polling` uniquement | Reverse-proxy sans support WS, ou `NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY=true` | Corriger la config proxy / variables d'env |
194-
| Auth « IP non autorisée » avec `127.0.0.1` | `SESAME_TRUST_PROXY=0` ou en-têtes `X-Forwarded-For` absents | Activer `SESAME_TRUST_PROXY=1` et transmettre les en-têtes IP |
195-
| Fonctionne en local, échoue derrière le proxy | Config WebSocket manquante sur Nginx/Apache | Appliquer ce guide |
222+
| Auth « IP non autorisée » avec `127.0.0.1` | `SESAME_TRUST_PROXY=0` ou en-têtes `X-Forwarded-For` absents | Activer `SESAME_TRUST_PROXY=1` et transmettre les en-têtes IP dans `location /` |
223+
| Fonctionne en local, échoue derrière le proxy | Config WebSocket manquante sur Nginx/Apache | Appliquer l'exemple complet ci-dessus |
224+
225+
### Tests sur le serveur
226+
227+
```bash
228+
curl -sI "http://sesame-orchestrator:3000/api/socket.io/?EIO=4&transport=polling"
229+
230+
curl -i -N \
231+
-H "Connection: Upgrade" \
232+
-H "Upgrade: websocket" \
233+
-H "Sec-WebSocket-Version: 13" \
234+
-H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \
235+
"http://sesame-orchestrator:3000/api/socket.io/?EIO=4&transport=websocket"
236+
```
237+
238+
Réponse attendue pour le second test : `HTTP/1.1 101 Switching Protocols`.

0 commit comments

Comments
 (0)