Panduan Pemecahan Masalah HTTP - Cek Port 80

Panduan troubleshooting port HTTP 80 menampilkan koneksi jaringan, alat diagnostik server, dan konfigurasi port dalam ilustrasi teknologi digital

Cek port 80 digunakan untuk memastikan apakah web server kamu bisa diakses melalui HTTP - protokol yang digunakan browser secara default saat kamu mengetik URL biasa tanpa "https://". Kalau port 80 diblokir atau tidak ada yang mendengarkan, pengunjung akan mendapat error koneksi dan situsmu tidak bisa diakses. Berikut cara mendiagnosis dan memperbaikinya.

Apa Fungsi Sebenarnya Port 80

Port 80 adalah port TCP default untuk HTTP (Hypertext Transfer Protocol) . Saat browser terhubung ke http://example.com , secara otomatis ia menargetkan port 80 pada alamat IP server tersebut. Software server - Apache, Nginx, IIS, Caddy, atau lainnya - harus aktif mendengarkan di port 80 agar koneksi berhasil.

Port 80 didefinisikan dalam registri port resmi IANA dan distandarisasi dalam RFC 9110. Ini adalah port "well-known", artinya nomor 0-1023 dicadangkan untuk layanan tingkat sistem dan membutuhkan hak akses tinggi (elevated privileges) untuk melakukan bind di Linux/macOS.

Cara Mengecek Apakah Port 80 Terbuka

Ada beberapa cara untuk mengecek apakah port 80 terbuka, tergantung apakah kamu memeriksa secara lokal (dari server itu sendiri) atau secara remote (dari mesin lain atau internet).

Menggunakan telnet

Telnet adalah cara pengujian manual yang paling cepat. Jalankan perintah ini dari mesin mana pun yang memiliki akses jaringan ke host target:

telnet example.com 80

Jika port 80 terbuka dan ada web server yang mendengarkan, kamu akan melihat kursor kosong atau banner HTTP. Jika tertutup atau difilter, kamu akan mendapat pesan "Connection refused" atau perintah akan menggantung hingga timeout.

Menggunakan curl

curl memberikan detail lebih banyak - ia menampilkan respons HTTP yang sebenarnya:

curl -v http://example.com

Flag -v menampilkan output verbose, termasuk TCP handshake dan header respons. Koneksi yang berhasil menampilkan * Connected to example.com (93.184.216.34) port 80 . Kegagalan koneksi menampilkan curl: (7) Failed to connect .

Menggunakan nmap

nmap adalah standar terbaik untuk port scanning. Untuk menguji port 80 secara spesifik:

nmap -p 80 example.com

Hasilnya akan menampilkan salah satu dari tiga status: open (ada yang mendengarkan), closed (port dapat dijangkau tapi tidak ada yang mendengarkan), atau filtered (firewall membuang paket dan nmap tidak dapat menentukan statusnya).

Filtered vs. Closed: "Filtered" biasanya berarti firewall membuang paket secara diam-diam. "Closed" berarti server merespons dengan TCP RST - port dapat dijangkau tapi tidak ada layanan yang terikat padanya. Keduanya membutuhkan penanganan yang berbeda.

Menggunakan PowerShell di Windows

Test-NetConnection -ComputerName example.com -Port 80

Perintah Test-NetConnection di PowerShell mengembalikan nilai TcpTestSucceeded : True atau False yang bersih, sehingga mudah digunakan dalam skrip. Untuk panduan lengkap tentang pengecekan port di Windows, lihat cara mengecek port terbuka di Windows .

Menggunakan netstat untuk Memeriksa Port 80

Saat kamu berada langsung di server, netstat menunjukkan dengan tepat proses mana yang terikat ke port 80. Ini adalah alat yang tepat saat kamu perlu menjawab pertanyaan "apakah ada sesuatu yang benar-benar mendengarkan di port 80 pada mesin ini?"

Linux / macOS

sudo netstat -tlnp | grep :80

Penjelasan flag:

  • -t - hanya koneksi TCP
  • -l - hanya socket yang sedang mendengarkan
  • -n - tampilkan alamat numerik (lebih cepat, melewati pencarian DNS)
  • -p - tampilkan nama proses dan PID

Hasil yang umum terlihat seperti: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx . Ini menunjukkan bahwa nginx (PID 1234) mendengarkan di semua interface pada port 80.

Pada sistem Linux modern, ss lebih cepat dan lebih direkomendasikan dibanding netstat :

sudo ss -tlnp | grep :80

Windows

netstat -ano | findstr :80

Perintah ini menampilkan semua koneksi dengan port 80 beserta PID-nya. Untuk menemukan nama proses dari PID (misalnya PID 4892):

tasklist /fi "pid eq 4892"
Port 80 digunakan oleh proses yang tidak terduga? Di Windows, "System" (PID 4) sering mengambil port 80 jika IIS terpasang dan berjalan. Di Linux, jika proses selain web server kamu memegang port 80, server yang kamu inginkan akan gagal dijalankan dengan error "address already in use".

Mendiagnosis Port 80 yang Diblokir Firewall

Pemblokiran oleh firewall adalah alasan paling umum mengapa port 80 tampak tertutup dari luar meskipun web server berjalan dengan baik secara lokal. Ada tiga lapisan di mana pemblokiran bisa terjadi:

Lapisan Tempat Memeriksa Alat
Firewall OS (server) iptables / ufw (Linux), Windows Defender Firewall iptables -L -n atau aturan Windows Firewall
Security group cloud AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules Aturan inbound di konsol cloud
Firewall jaringan/ISP Router ACL, pemblokiran port residensial oleh ISP Hubungi ISP atau gunakan port scanner eksternal

Cek iptables di Linux

sudo iptables -L INPUT -n -v | grep 80

Jika kamu melihat aturan DROP atau REJECT untuk port 80, itulah penyebabnya. Untuk mengizinkan port 80 dengan ufw:

sudo ufw allow 80/tcp
sudo ufw reload

Cek AWS Security Groups

Jika server kamu berada di EC2, buka konsol EC2 - Security Groups - Inbound rules. Kamu perlu aturan yang mengizinkan TCP port 80 dari 0.0.0.0/0 (atau rentang IP spesifik kamu). Tanpa ini, semua traffic port 80 akan dibuang bahkan sebelum mencapai firewall OS kamu.

Untuk pembahasan lebih mendalam tentang diagnostik port di sisi Linux, lihat panduan lengkap mengecek port terbuka di Linux yang mencakup iptables, ufw, firewalld, dan nftables secara detail.

Port HTTP Tidak Merespons: Penyebab Umum dan Solusinya

Ketika port HTTP tidak merespons, masalahnya biasanya masuk ke salah satu kategori berikut:

  • Web server tidak berjalan - Periksa dengan systemctl status nginx atau systemctl status apache2 . Jika berhenti, jalankan kembali: sudo systemctl start nginx .
  • Web server crash saat startup - Periksa log: sudo journalctl -u nginx --since "10 minutes ago" . Error sintaks konfigurasi atau konflik port akan tercatat di sini.
  • Server hanya terikat ke localhost - Jika konfigurasi server kamu menyebutkan listen 127.0.0.1:80 alih-alih listen 0.0.0.0:80 , server tidak akan menerima koneksi eksternal. Perbaiki alamat bind di konfigurasi server kamu.
  • Port 80 sudah digunakan - Proses lain mengambil port 80 sebelum web server kamu dijalankan. Gunakan netstat untuk mengidentifikasinya, lalu hentikan atau konfigurasi ulang salah satu layanan tersebut.
  • SELinux atau AppArmor memblokir bind - Pada sistem RHEL/CentOS, SELinux mungkin mencegah proses non-standar melakukan bind ke port 80. Periksa ausearch -m AVC -ts recent untuk melihat penolakan akses.
Pemeriksaan cepat: Jalankan curl http://127.0.0.1 langsung di server. Jika berhasil tapi koneksi eksternal gagal, masalahnya ada di firewall atau aturan jaringan - bukan pada web server itu sendiri.

Uji Konektivitas Port 80 dari Luar Jaringan

Pengujian dari mesin sendiri bisa menyesatkan - kamu mungkin berada di LAN yang sama dengan server, sehingga melewati aturan firewall yang berlaku untuk traffic eksternal. Untuk menguji konektivitas port 80 sebagaimana yang dialami pengunjung nyata, kamu membutuhkan pengujian dari luar.

Kamu bisa memeriksa header respons HTTP server kamu dari luar menggunakan alat HTTP Headers Checker kami. Alat ini mengambil header dari URL kamu dan menampilkan persis apa yang diterima browser - status code, tipe server, rantai redirect, dan lainnya - semua dari sudut pandang eksternal.

Opsi eksternal lainnya:

  • Port scanner online - Situs seperti portchecker.co atau canyouseeme.org memungkinkan kamu memasukkan IP dan nomor port untuk diuji dari server mereka.
  • Dari VPS atau cloud shell - Buat instance cloud tier gratis di region berbeda dan jalankan nc -zv your-server-ip 80 dari sana.
  • Menggunakan nc (netcat) secara lokal - nc -zv example.com 80 memberikan hasil open/closed dengan cepat tanpa perlu menginstal apa pun di sebagian besar sistem Linux/macOS.

Port 80 vs. Port 443: Kapan Masing-masing Dibutuhkan

Port 443 menangani HTTPS (HTTP terenkripsi melalui TLS). Sebagian besar situs modern langsung mengalihkan semua traffic port 80 ke port 443. Namun port 80 tetap penting karena beberapa alasan:

  • Challenge ACME/Let's Encrypt HTTP-01 - certbot dari Let's Encrypt menggunakan port 80 untuk memverifikasi kepemilikan domain. Jika port 80 diblokir, penerbitan sertifikat akan gagal.
  • Layanan internal tanpa TLS - Banyak alat internal, agen monitoring, dan microservice berkomunikasi melalui HTTP biasa di port 80 dalam jaringan privat.
  • Klien lawas dan perangkat IoT - Beberapa perangkat embedded dan klien lama tidak mendukung TLS dan bergantung pada port 80.
  • Infrastruktur redirect - Meskipun kamu menyajikan segalanya melalui HTTPS, kamu tetap perlu port 80 terbuka untuk menangkap dan mengalihkan permintaan HTTP agar pengguna tidak mendapat error koneksi.
Praktik terbaik: Biarkan port 80 tetap terbuka tapi konfigurasikan web server kamu untuk mengeluarkan redirect permanen 301 dari HTTP ke HTTPS. Ini memberikan keamanan TLS sekaligus menjaga port 80 tetap berfungsi untuk redirect dan pembaruan sertifikat.
Alat pengecekan header HTTP untuk troubleshooting port 80

Lihat langsung apa yang sebenarnya dikembalikan port 80

HTTP Headers Checker kami mengambil respons langsung dari URL mana pun sehingga kamu bisa memastikan port 80 terbuka, memeriksa rantai redirect, dan melihat status code persis yang dikirim server kamu - tanpa perlu command line.

Cek HTTP Headers Sekarang →

Di Linux, jalankan sudo ss -tlnp | grep :80 atau sudo netstat -tlnp | grep :80 . Kedua perintah ini menampilkan nama proses dan PID yang terikat ke port 80. Di Windows, gunakan netstat -ano | findstr :80 untuk mendapatkan PID, lalu tasklist /fi "pid eq [PID]" untuk menemukan nama prosesnya. Proses yang umum ditemukan antara lain nginx, apache2, IIS, dan server Node.js.

Gunakan perintah netstat atau ss yang sama tapi filter untuk 8080: sudo ss -tlnp | grep :8080 di Linux, atau netstat -ano | findstr :8080 di Windows. Port 8080 adalah port HTTP alternatif yang umum digunakan oleh server pengembangan, Tomcat, Jenkins, dan proxy. Jika ada sesuatu yang sudah terikat di sana, kamu perlu menghentikannya atau mengonfigurasi layanan baru untuk menggunakan port yang berbeda.

Pada server web khusus dan instance VPS, ya - port 80 biasanya terbuka dan memang diharapkan demikian. Pada koneksi internet residensial, banyak ISP memblokir port 80 inbound untuk mencegah pelanggan menjalankan server publik dari koneksi rumah. Pada instance cloud, port 80 sering ditutup secara default di security group hingga kamu secara eksplisit menambahkan aturan inbound yang mengizinkannya.

Dari luar server, gunakan nmap -p 80 your-server-ip atau telnet your-server-ip 80 . Dari server itu sendiri, gunakan ss -tlnp | grep :80 untuk memastikan ada sesuatu yang mendengarkan. Periksa juga aturan firewall kamu - di Linux dengan ufw, jalankan sudo ufw status untuk melihat apakah port 80 tercantum sebagai diizinkan.

Di Linux dengan ufw: sudo ufw allow 80/tcp . Dengan iptables langsung: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT . Di Windows, tambahkan aturan inbound di Windows Defender Firewall untuk TCP port 80. Pada server cloud, tambahkan aturan inbound di security group atau network security group yang mengizinkan TCP port 80 dari rentang sumber yang diinginkan.

Port 80 terbuka ketika web server dikonfigurasi untuk melayani traffic HTTP, yang merupakan standar untuk situs web yang menghadap publik. Port ini juga tetap terbuka pada server yang mengalihkan HTTP ke HTTPS (port 443), karena redirect itu sendiri memerlukan penerimaan koneksi port 80 awal. Alat pembaruan sertifikat seperti certbot dari Let's Encrypt juga memerlukan port 80 untuk challenge validasi domain HTTP-01.

Buka Windows Defender Firewall with Advanced Security, klik "Inbound Rules", lalu "New Rule". Pilih "Port", pilih TCP, masukkan 80 sebagai port lokal spesifik, pilih "Allow the connection", terapkan ke semua profil (Domain, Private, Public), dan beri nama aturan tersebut. Atau, jalankan perintah ini di PowerShell dengan hak akses tinggi: New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow .

Ya, di Linux dan macOS, port 80 adalah port privileged (port 0-1023 memerlukan akses root atau kapabilitas CAP_NET_BIND_SERVICE untuk melakukan bind). Artinya proses pengguna biasa tidak bisa mendengarkan di port 80 tanpa izin tinggi. Web server seperti nginx dan Apache biasanya dijalankan sebagai root untuk melakukan bind ke port 80, kemudian beralih ke pengguna dengan hak lebih rendah untuk menangani permintaan. Di Windows, tidak ada batasan setara untuk port 80.

Port 80 (HTTP) digunakan sebagai pengganti 443 (HTTPS) dalam skenario di mana TLS tidak diperlukan atau tidak praktis - seperti microservice internal di jaringan privat yang terpercaya, lingkungan pengembangan lokal, atau perangkat IoT tanpa dukungan TLS. Port 80 juga diperlukan untuk challenge sertifikat HTTP-01 dari Let's Encrypt. Untuk situs yang menghadap publik, port 443 dengan TLS sangat direkomendasikan, dengan port 80 tetap terbuka hanya untuk redirect.

Tidak, keduanya adalah port yang berbeda. Port 80 adalah standar yang ditetapkan IANA untuk HTTP dan digunakan secara otomatis oleh browser saat tidak ada port yang ditentukan. Port 8000 adalah alternatif tidak resmi yang umum digunakan oleh server pengembangan - perintah python -m http.server milik Python menggunakan 8000 secara default, begitu pula server pengembangan Django. Untuk mengakses layanan di port 8000, kamu harus menentukannya secara eksplisit di URL: http://example.com:8000 .