Belajar Curl - Konfigurasi, Config File & Environment
Episode 8 of 23

Belajar Curl - Konfigurasi, Config File & Environment

Pada episode ini kita akan menyimpan opsi favorit curl di file konfigurasi, memakai --config untuk proyek tertentu, serta memahami cara curl membaca environment variable proxy dan override-nya.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 7 kalian sudah menguasai transfer file — dari download dengan resume hingga upload ke FTP dan SFTP. Pada episode kali ini kita akan merapikan semuanya. Bayangkan kalian harus menulis -u user:pass plus --progress-bar plus --connect-timeout 10 di setiap perintah, berulang kali setiap hari. Cepat atau lambat pasti ada yang terlupa atau salah ketik. Solusinya adalah konfigurasi: menaruh opsi default di satu tempat, lalu membiarkan curl membacanya secara otomatis.

Ada dua mekanisme yang akan kita bedah: file konfigurasi (untuk opsi yang ingin dipertahankan) dan environment variable (untuk pengaturan yang bergantung pada lingkungan, khususnya proxy). Keduanya bekerja di belakang layar — begitu dipahami, kalian akan melihat curl berubah dari alat yang ribet menjadi alat yang "sudah terpasang sesuai selera".

File Konfigurasi: ~/.curlrc

curl membaca file konfigurasi sebelum memproses argumen baris perintah. File default-nya adalah ~/.curlrc — berlaku untuk semua sesi curl milik user. Formatnya sederhana: satu baris berisi satu opsi, ditulis tanpa tanda strip di depan. Komentar diawali #.

~/.curlrc
# Opsi default untuk semua request curl
user-agent = "devvnull-bot/1.0"
connect-timeout = 10
max-time = 60
silent
show-error
follow-redirects
retry = 3
retry-delay = 2
# Jangan simpan output apa pun selain yang dibutuhkan
location-trusted

Setiap baris adalah opsi yang sama persis dengan flag di command line, hanya tanpa strip ganda. silent setara dengan -s, follow-redirects setara dengan -L. Begitu file ini ada, setiap perintah curl di terminal kalian otomatis memakai timeout 10 detik dan mencoba ulang sampai tiga kali — tanpa harus mengetikkannya lagi. Inilah kekuatan utama config file: default yang konsisten di semua sesi.

Prioritasnya berjenjang dan penting untuk diingat:

  1. Opsi di command line — selalu menang.
  2. Opsi di file konfigurasi — dipakai jika tidak di-override.
  3. Default bawaan curl — dipakai jika keduanya tidak ada.

Artinya, menulis --connect-timeout 30 di command line akan mengalahkan connect-timeout = 10 di ~/.curlrc untuk request itu saja. File konfigurasi bukan penjara — ia hanya jaring pengaman.

Konfigurasi Per-Proyek: --config

Untuk konfigurasi yang berbeda-beda antar proyek atau environment, jangan mengotori ~/.curlrc — gunakan opsi --config yang memuat file tertentu. Ini mirip --env-file pada tools modern: satu file untuk staging, satu lagi untuk produksi, dan file mana yang dipakai ditentukan saat menjalankan perintah.

.curlrc-prod
# Konfigurasi khusus untuk mengakses environment produksi
user-agent = "devvnull-cron/1.0"
connect-timeout = 5
max-time = 30
retry = 2
header = "Accept: application/json"
header = "X-Client: deploy-bot"
# Sertakan kredensial dari environment
user = "budi"
pakai-config.sh
curl --config .curlrc-prod https://api.example.com/health

Perhatikan dua hal. Pertama, opsi header bisa diulang — setiap baris menambahkan satu header, sehingga bisa mengirim beberapa header sekaligus. Kedua, kalian bisa menggabungkan --config dengan flag command line; opsi di command line tetap menang. Untuk project yang butuh autentikasi berbeda-beda, pola "satu config file per environment" jauh lebih rapi daripada menulis -u di setiap script.

Tip

Opsi --config bisa dipakai lebih dari sekali, misalnya curl --config base.rc --config staging.rc URL. File yang disebut belakangan dianggap muncul kemudian, sehingga bisa meng-override opsi dari file sebelumnya. Susun seperti ini untuk membangun konfigurasi berlapis: file dasar berisi opsi umum, file kedua berisi kustomisasi environment.

Environment Variable Proxy

Salah satu alasan orang kadang "tidak sadar" curl berjalan lewat proxy adalah karena curl membaca environment variable secara otomatis — tanpa flag apa pun. Variabel yang dikenali:

  • http_proxy — proxy untuk semua URL dengan skema http.
  • https_proxy — proxy untuk URL dengan skema https.
  • all_proxy — proxy untuk semua protokol, dipakai bila variabel spesifik skema tidak ada.
  • no_proxy — daftar host yang harus dilewati tanpa proxy.
set-proxy.sh
export http_proxy="http://proxy.corp:8080"
export https_proxy="http://proxy.corp:8080"
export no_proxy="localhost,127.0.0.1,*.internal.example.com"
 
curl -s https://api.example.com/users

Curl membaca variabel baik huruf kecil maupun besar (misalnya HTTP_PROXY), dengan prioritas pada huruf kecil. Ini berarti mengekspor https_proxy sekali di ~/.bashrc sudah cukup untuk membuat semua curl di laptop mengalir lewat proxy perusahaan — tanpa perlu menyentuh satu perintah pun.

Untuk menonaktifkan atau mempersempit proxy pada request tertentu, gunakan --noproxy:

noproxy.sh
curl --noproxy "*.internal.example.com" -s \
  https://internal.example.com/api/health

Nilai --noproxy "*" mematikan semua proxy untuk request itu, sekaligus mengesampingkan seluruh environment variable proxy — berguna saat kalian tahu host tujuan harus diakses langsung.

Important

Hati-hati saat mendefinisikan no_proxy di lingkungan tim: jika daftar host pengecualian terlalu sempit, traffic internal bisa diam-diam lewat proxy. Sebaliknya, jika terlalu luas — misalnya * — proxy tidak akan pernah terpakai. Konsistenkan definisi no_proxy di level tim, bukan di memori masing-masing orang.

Menonaktifkan Config File: -q

Ada kalanya ~/.curlrc justru menjadi gangguan — misalnya saat meniru perilaku curl polos di mesin lain, atau saat opsi default di config file membuat request tampak aneh dan kalian ingin tahu penyebabnya. Untuk itu ada -q (alias --disable):

disable-config.sh
curl -q https://api.example.com/health

Dengan -q, curl tidak membaca config file sama sekali — baik ~/.curlrc maupun file yang dipanggil --config — dan kembali ke default bawaan. Ini alat debugging yang sangat berguna: jika sebuah request berperilaku aneh, jalankan sekali dengan -q. Kalau perilakunya normal setelah -q, penyebabnya pasti ada di salah satu config file; kalau masih aneh, masalahnya ada di command line kalian sendiri.

Penutup

Episode 8 membekali kalian dengan dua lapis konfigurasi: file konfigurasi untuk opsi yang menetap — ~/.curlrc untuk default global dan --config untuk konfigurasi per-proyek atau per-environment — serta environment variable untuk pengaturan yang bergantung pada lingkungan, khususnya http_proxy, https_proxy, all_proxy, dan no_proxy dengan override --noproxy. Jangan lupa -q untuk menonaktifkan config file saat debugging.

Yang perlu diingat: config file adalah tempat opsi menetap, command line adalah tempat override. Semakin rapi kalian menata keduanya, semakin sedikit flag yang harus dihafal setiap hari.

Di episode 9 berikutnya kita akan memperdalam topik proxy dan networking — bagaimana memilih proxy HTTP, HTTPS, atau SOCKS5, menangani autentikasi proxy, memanipulasi DNS dengan --resolve, dan memecahkan masalah koneksi. Sampai jumpa!

Belajar Curl - Konfigurasi, Config File & Environment | Belajar Curl