Se connecter

Informatique

Création de sites web

Sujet : Apache 2.4 et ProxyPass Socket.IO (Node.JS)
1
Harm0
Niveau 7
18 novembre 2017 à 15:21:05

Hello ! :)

J'ai rencontre un soucis sur de la conf Apache concernant le mod proxy, j'aimerais proxyfier du socket.io derrière un apache en gros.

Mon serveur node occupe un port 1338 :

httpServer.listen(1338);
var io = require("socket.io").listen(httpServer);
 
io.sockets.on("connection", function(socket){
...
}

Côté front, je dois charger le fichier js socket.io.js fourni par le serveur node (donc derrière le proxy Apache dans l'idéal, puis ouvrir un socket :

<script src="/socket.io/socket.io.js"></script>
var socket = io.connect("http://domain.tld/socket.io");

Après une petite centaine d'essais de configs et de bidouillages, j'ai mis cette config dans mon vhost :

RewriteEngine On
RewriteRule /socket.io/1/websocket/ - [R=200,L]
ProxyPass /socket.io/socket.io.js http://127.0.0.1:1338/socket.io/socket.io.js
ProxyPassReverse /socket.io/socket.io.js http://127.0.0.1:1338/socket.io/socket.io.js
ProxyPass /socket.io/1/websocket/ ws://127.0.0.1:1338/socket.io/1/websocket/
ProxyPassReverse /socket.io/1/websocket/ ws://127.0.0.1:1338/socket.io/1/websocket/
ProxyPass /socket.io/1/ http://127.0.0.1:1338/socket.io/1/
ProxyPassReverse /socket.io/1/ http://127.0.0.1:1338/socket.io/1/

Le fichier socket.io.js est bien fourni par le serveur node à travers le proxy, ça c'est nickel !
Par contre, j'ai toujours un problème au moment d'ouvrir mon socket. :-(

GET http://domain.tld/socket.io/?EIO=3&transport=polling&t=L_F7frg 404 (Not Found)
...

L'erreur Apache lié au cas ou :

[Sat Nov 18 13:31:09.431794 2017] [proxy:warn] [pid 22356] [client xx.xx.xx.xx:52436] AH01144: No protocol handler was valid for the URL /socket.io/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://domain.tld/

Je sèche vraiment, j'y suis depuis hier soir, et à force d'avoir le nez dans les configs, je vois plus rien ^^

Merci d'avance :-d

20_cent_2017
Niveau 10
18 novembre 2017 à 16:01:09

Ta pas besoin d'apache pour faire de l’écoute sur du socket ...
D'ailleur c'est ton serveur qui donne le port d'écoute normalement...

Harm0
Niveau 7
18 novembre 2017 à 16:04:08

Yep, je sais, mais mon objectif est de coupler un site "classique" (apache, php), et avoir une page qui utilise un socket (donc node), mais que les utilisateurs qui viennent sur le site n'aient besoin d'avoir que le port 80 d'accessible pour que ça soit plus propre et sécurisé.

Harm0
Niveau 7
19 novembre 2017 à 00:39:37

J'ai finalement trouvé la solution dans l'après-midi, je l'ai posté sur le topic que j'avais créé sur openclassroom pour les intéressés. :)

https://openclassrooms.com/forum/sujet/apache-2-4-et-proxypass-socket-io-node-js

1
Sujet : Apache 2.4 et ProxyPass Socket.IO (Node.JS)
   Retour haut de page
Consulter la version web de cette page