J'ai un serveur HTTP fonctionnant à /var/run/my-server.sock
et je veux le tester en envoyant une simple requête à l'aide de cURL. Cela peut-il être fait avec cURL? Cela peut-il être fait ou faut-il un proxy inverse?
J'imagine quelque chose comme ça:
curl socket:/var/run/my-server.sock:/test/path
La fonctionnalité a été ajoutée dans curl 7.40
.
curl --unix-socket /var/run/docker.sock http:/images/json
Un autre exemple:
curl --no-buffer -XGET --unix-socket /docker.sock http:/events
Qui spécifie la GET
explicitement (plutôt que supposé). Et ne mettra pas en mémoire tampon (pour tail -f
mise à jour en temps réel).
(La première version d'Ubuntu à être livrée avec curl 7.40 ou une version plus récente était 15.10).
cURL 7.50 et supérieur requiert la fourniture d'une URL valide , y compris un nom d'hôte. Pour exécuter les exemples ci-dessus avec cURL 7.50, un nom d'hôte "factice" doit être ajouté, par exemple:
curl --unix-socket /var/run/docker.sock http://localhost/images/json
et
curl --no-buffer -XGET --unix-socket /docker.sock http://localhost/events
Pas sûr, mais selon ce billet:
cela ne semble pas être le cas.
Par ceci:
on dirait que socat ou nc peut le faire, coupez le coup ci-dessus:
# Socat version
echo -e "GET /images/json HTTP/1.1\r\n" | socat unix-connect:/var/run/docker.sock STDIO
# nc version (netcat-freebsd)
echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock
Je n'ai pas essayé non plus moi-même.