Вики / Сеть
curl (HTTP из консоли)
Запросы HTTP/HTTPS из CLI — отладка API и веб-сервисов, заголовки, методы.
curl шлёт HTTP(S)-запросы из командной строки — незаменим для отладки API,
веб-серверов (nginx) и проверки доступности.
curl https://example.com # GET, тело в stdout
curl -I https://example.com # только заголовки ответа (HEAD)
curl -s https://example.com # тихо (без прогресс-бара) — для скриптов
curl -L https://example.com # идти по редиректам
# код ответа без тела (健康-чек)
curl -s -o /dev/null -w '%{http_code}\n' https://example.com
# методы и данные
curl -X POST -d 'a=1&b=2' https://api/x
curl -H 'Content-Type: application/json' -d '{"k":"v"}' https://api/x
curl -H 'Authorization: Bearer TOKEN' https://api/x
# заголовки запроса/подмена Host (полезно за прокси)
curl -H 'Host: site.local' http://127.0.0.1/
curl -v https://example.com # весь обмен (запрос+ответ+TLS)
# файлы
curl -O https://site/file.tar.gz # сохранить под тем же именем
curl -o out.bin https://site/x # под своим именем
| Флаг | Смысл |
|---|---|
-s |
без прогресс-бара (скрипты) |
-S |
показывать ошибки даже при -s |
-f |
падать с ошибкой на HTTP 4xx/5xx (для скриптов) |
-L |
следовать редиректам |
-I |
только заголовки (HEAD) |
-w '%{http_code}' |
вывести метрику (код, время, размер) |
-k |
не проверять TLS-сертификат (осторожно) |
--resolve host:port:IP |
подменить DNS для запроса |
502/504 за прокси
Апстрим недоступен/таймаут. Проверь сам апстрим: curl -v http://127.0.0.1:8000/.
Частая причина 502 — прокси шлёт https на http-порт.
SSL certificate problem
Сертификат невалиден/самоподписан. Для отладки -k (но не в проде); правильно —
починить цепочку/CA.
Could not resolve host
DNS (см. «DNS и разрешение имён»). Проверь getent hosts <имя>. Обойти:
--resolve host:443:1.2.3.4.
Хочу понять, что именно шлётся
curl -v покажет строку запроса, заголовки и TLS-рукопожатие.
curl -s -o /dev/null -w '%{http_code}\n' URL # health-check
curl -I URL # заголовки
curl -v URL # весь обмен
curl -H 'Host: x' http://127.0.0.1/ # подмена Host
curl -X POST -d 'a=1' URL ; -H 'Authorization: Bearer T'
curl --resolve host:443:IP URL # обойти DNS
См. также
- ss (сокеты и порты) — Сеть
- DNS и разрешение имён — Сеть
- nginx — Службы и systemd