60

У меня есть HTTP-сервер, работающий по адресу /var/run/my-server.sock , и я хочу проверить его, отправив простой запрос с использованием cURL. Можно ли это сделать с помощью cURL? Можно ли это сделать вообще или должен быть установлен обратный прокси-сервер?

Я представляю что-то вроде этого:

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

2 ответа2

86

Функция была добавлена в 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 ).

(Первая версия Ubuntu, выпущенная с curl 7.40 или новее, была 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
8

Не уверен, но в соответствии с этим билетом:

похоже, это не так.

По этому:

кажется, что 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

Я тоже не пробовал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .