我在 上运行了一个 HTTP 服务器/var/run/my-server.sock
,我想通过使用 cURL 发送一个简单的请求来测试它。可以使用 cURL 完成此操作吗?这可以完成吗,还是必须有反向代理?
我正在想象这样的事情:
curl socket:/var/run/my-server.sock:/test/path
答案1
该功能已添加到 curl 中7.40
。
curl --unix-socket /var/run/docker.sock http:/images/json
另一个例子:
curl --no-buffer -XGET --unix-socket /docker.sock http:/events
其中GET
明确指定(而不是假设)。并且不会缓冲(用于tail -f
实时更新)。
(第一个搭载 curl 7.40 或更新版本的 Ubuntu 版本是 15.10)。
cURL 7.50 及更高版本需要提供有效的 URL,包括主机名,因此要使用 cURL 7.50 运行上述示例,必须添加“虚拟”主机名,例如:
curl --unix-socket /var/run/docker.sock http://localhost/images/json
和
curl --no-buffer -XGET --unix-socket /docker.sock http://localhost/events
答案2
不确定,但根据这张票:
但似乎并非如此。
根据此:
似乎 socat 或 nc 可以做到这一点,从上面的片段中截取:
# 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
我自己也没有尝试过。