web-dev-qa-db-ja.com

cURLはソケットにリクエストを送信できますか?

HTTPサーバーを/var/run/my-server.sockで実行しているので、cURLを使用して簡単なリクエストを送信してテストします。これはcURLを使ってできますか?それはまったくできますか、それともリバースプロキシが必要ですか?

私はこのようなものを想像しています:

curl socket:/var/run/my-server.sock:/test/path
67
Hubro

この機能は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
94
Dreamcat4

よくわからないが、このチケットの通り:

そうではないようです。

これあたり:

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

どちらも試していません。

8
steady rain