Tuliskan rute yang Anda harapkan
Panduan ini mengasumsikan VPS Linux yang Anda kelola, sesi SSH yang berfungsi, aplikasi dengan endpoint /healthz yang tidak berbahaya, dan akses ke pengaturan DNS otoritatif untuk domain yang Anda kendalikan. Aplikasi contoh mendengarkan di 127.0.0.1:3000; Caddy adalah reverse proxy publik. Jika aplikasi Anda menggunakan supervisor atau proxy yang berbeda, pertahankan urutan diagnostik dan gunakan dokumentasinya.
api.example.com dan 203.0.113.10 adalah placeholder dokumentasi, bukan layanan langsung. Ganti keduanya sebelum menjalankan pemeriksaan terhadap sistem Anda sendiri. Catat hostname sebenarnya, alamat IP yang dimaksud, port aplikasi, dan nama layanan di satu tempat. Menetapkan hostname VPS di konfigurator tidak membuat catatan DNS publik.
- DNS mengembalikan alamat yang dimaksud.
- Koneksi mencapai server dan port yang dimaksud.
- TLS mengautentikasi hostname yang diminta.
- Proxy meneruskan permintaan ke upstream yang tepat.
- Aplikasi mengembalikan respons yang diharapkan.
Periksa kedua keluarga alamat
Dari mesin di luar VPS, kueri catatan yang ingin Anda publikasikan. dig milik alat DNS BIND; nama paket bervariasi. Perintah ini meminta bagian jawaban agar Anda dapat melihat tipe catatan, alamat, dan sisa masa pakai cache. Lihat referensi dig BIND.
dig api.example.com A +noall +answer
dig api.example.com AAAA +noall +answer
Bandingkan setiap alamat yang dikembalikan dengan tujuan yang Anda maksud. Publikasikan catatan AAAA hanya ketika routing, pendengaran, dan pemfilteran IPv6 berfungsi untuk alamat tersebut. Catatan AAAA lama dapat mengirim sebagian klien ke tempat yang berbeda dari catatan A. Jika Anda sengaja menggunakan CDN atau proxy DNS, alamatnya mungkin benar; catat hop tambahan itu alih-alih mengasumsikan VPS harus muncul.
Jawaban kosong perlu melihat lebih dekat pada dig respons lengkap: itu bisa berarti tidak ada catatan tipe tersebut, nama tidak ada, atau masalah resolusi. Periksa layanan DNS mana yang otoritatif sebelum mengedit. Catat nilai lama dan TTL, lakukan perubahan yang dimaksud di sana, lalu bandingkan hasil baru setelah cache yang ada kedaluwarsa. Pengeditan tak terkait yang berulang membuat linimasa lebih sulit dipahami.
Pisahkan kegagalan koneksi dari kegagalan sertifikat
Minta endpoint kecil dari luar server. Gunakan GET alih-alih mengasumsikan aplikasi Anda mengimplementasikan HEAD. Opsi timeout Curl membatasi pemeriksaan; keluaran verbose-nya menunjukkan kemajuan koneksi dan TLS. Curl mendokumentasikan opsi ini dan verifikasi sertifikat.
curl --verbose --connect-timeout 5 --max-time 10 https://api.example.com/healthz
Error resolusi menunjuk kembali ke DNS. Koneksi ditolak berarti koneksi secara aktif ditolak; timeout dapat melibatkan routing atau pemfilteran dan tidak mengidentifikasi firewall mana yang menyebabkannya. Error sertifikat berarti koneksi aman yang diharapkan tidak terbentuk. Jangan jadikan menonaktifkan pemeriksaan sertifikat sebagai perbaikan permanen Anda.
Untuk membandingkan origin tertentu sambil mempertahankan hostname dalam permintaan TLS, gunakan override alamat curl:
curl --verbose --connect-timeout 5 --max-time 10 --resolve api.example.com:443:203.0.113.10 https://api.example.com/healthz
Jika ini berhasil sementara permintaan biasa gagal, bandingkan DNS dan perantara apa pun. Penggantian ini tidak mengedit DNS. Saat rekaman A dan AAAA sama-sama ada, ulangi permintaan biasa dengan --ipv4 dan --ipv6 dari klien yang benar-benar mendukung jaringan yang sesuai.
Periksa ujung server dari koneksi
Di VPS, periksa soket TCP yang mendengarkan dan kueri aplikasi secara langsung:
sudo ss -ltnp
curl --silent --show-error --max-time 5 http://127.0.0.1:3000/healthz
ss menampilkan pendengar dan, dengan izin yang memadai, prosesnya. Pendengar loopback dapat dijangkau secara lokal; keberadaannya saja tidak menjelaskan apa pun tentang akses eksternal. Konsultasikan manual ss hulu. Jika permintaan aplikasi langsung gagal, lanjutkan ke panduan diagnosis proses sebelum mengubah DNS.
Untuk tata letak satu aplikasi ini, blok Caddyfile yang relevan adalah:
api.example.com {
reverse_proxy 127.0.0.1:3000
}
Nama host dan hulu harus cocok dengan aplikasi Anda. Direktif reverse proxy Caddy meneruskan permintaan ke hulu yang dikonfigurasi; menempatkan domain sembarang di sini tidak memberi Anda kendali atasnya. Pertahankan konfigurasi yang ada sebelum mengedit. Dengan layanan terpaket dan jalur file ini, validasi terlebih dahulu, lalu muat ulang hanya setelah validasi berhasil:
sudo caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
sudo systemctl reload caddy
Perintah-perintah memiliki tujuan berbeda: validasi memeriksa pemuatan konfigurasi, sedangkan muat ulang menerapkan perubahan. Periksa jalur file dan izin layanan yang terpasang. Referensi perintah Caddy menjelaskan perilaku validasi dan muat ulang.
Verifikasi jalur lengkap, lalu simpan buktinya
Untuk otomatisasi sertifikat publik biasa, Caddy memerlukan DNS yang benar, port tantangan yang dapat dijangkau secara eksternal, izin untuk mengikat pendengarnya, dan penyimpanan sertifikat yang dapat ditulis secara persisten. Tantangan HTTP dan TLS-ALPN masing-masing menggunakan port 80 dan 443; tantangan DNS adalah pengaturan terpisah. Lihat prasyarat HTTPS Caddy. Jaga akses administratif tetap utuh saat meninjau aturan firewall.
Hasil ilustratif: endpoint lokal mengembalikan {"status":"ok"}, permintaan HTTPS eksternal mengembalikan isi kecil yang sama, dan curl melaporkan verifikasi sertifikat yang berhasil. Ini adalah pengamatan yang diharapkan untuk contoh ini, bukan hasil yang tercatat dari server OffVPS. Juga lakukan satu tindakan aplikasi normal: endpoint kesehatan dangkal mungkin lolos sementara rute yang bergantung pada basis data gagal.
Catat waktu permintaan, nama host, keluarga alamat, dan lapisan pertama yang gagal. Ringkasan itu lebih berguna daripada “domainnya rusak.” Setelah jalur berfungsi, gunakan panduan rilis yang dapat diulang untuk menjadikan pemeriksaan yang sama sebagai bagian dari setiap penyebaran.
Dokumentasi yang digunakan
Referensi utama untuk halaman ini. Periksa dokumentasi untuk versi yang terpasang di lingkungan Anda sendiri.