web-dev-qa-db-fra.com

Est-ce que cURL peut envoyer des requêtes aux sockets?

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
66
Hubro

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
93
Dreamcat4

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.

8
steady rain