Can cURL send requests to sockets?
I have a HTTP server running at /var/run/my-server.sock, and I want to test it by sending a simple request using cURL. Can this be done using cURL? Can it be done at all, or must there be a reverse proxy in place?
I'm imagining something like this:
curl socket:/var/run/my-server.sock:/test/path 2 Answers
The feature was added in curl 7.40.
curl --unix-socket /var/run/docker.sock http:/images/jsonAnother example:
curl --no-buffer -XGET --unix-socket /docker.sock http:/eventsWhich specifies the GET explicitly (rather than assumed). And will not buffer (for tail -f realtime update).
(The first Ubuntu release to ship with curl 7.40 or newer was 15.10).
cURL 7.50 and up requires a valid URL to be provided, including a hostname, so to run the above examples with cURL 7.50, a "dummy" hostname has to be added, for example:
curl --unix-socket /var/run/docker.sock and
curl --no-buffer -XGET --unix-socket /docker.sock 6 Not sure, but as per this ticket:
it doesn't seem to be the case.
Per this:
seems like socat or nc can do it, snip from the above snip:
# 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.sockHaven't tried either myself.
1