Port 80 kontrolü, web sunucunun HTTP üzerinden erişilebilir olup olmadığını söyler - HTTP, tarayıcıların "https://" olmadan düz bir URL yazdığında varsayılan olarak kullandığı protokoldür. Port 80 engellenmiş ya da dinleme durumunda değilse, ziyaretçiler bağlantı hatası alır ve siteniz erişilemez hale gelir. Sorunu nasıl teşhis edip düzelteceğini tam olarak burada bulacaksın.
İçindekiler
- Port 80 Aslında Ne İşe Yarar?
- Port 80 Açık mı? Nasıl Kontrol Edilir?
- netstat ile Port 80 İncelemesi
- Firewall Tarafından Engellenen Port 80 Nasıl Teşhis Edilir?
- HTTP Portu Yanıt Vermiyor: Yaygın Nedenler ve Çözümler
- Port 80 Bağlantısını Ağ Dışından Test Et
- Port 80 ve Port 443: Hangisi Ne Zaman Önemlidir?
Port 80 Aslında Ne İşe Yarar?
Port 80,
HTTP (Hypertext Transfer Protocol)
için varsayılan TCP portudur. Bir tarayıcı
http://example.com
adresine bağlandığında, otomatik olarak o sunucunun IP adresindeki port 80'i hedefler. Apache, Nginx, IIS, Caddy veya başka herhangi bir sunucu yazılımının bu bağlantının başarılı olması için port 80'i aktif biçimde dinliyor olması gerekir.
Port 80, IANA'nın resmi port kaydında tanımlanmış ve RFC 9110 ile standartlaştırılmıştır. "İyi bilinen" bir porttur; yani 0-1023 arasındaki numaralar sistem düzeyindeki servisler için ayrılmıştır ve Linux/macOS üzerinde bind yapabilmek için yüksek yetkiler gerektirir.
Port 80 Açık mı? Nasıl Kontrol Edilir?
Port 80'in açık olup olmadığını kontrol etmenin birkaç yolu var; bu, kontrolü yerel olarak (sunucunun kendisinde) mi yoksa uzaktan (başka bir makineden ya da internet üzerinden) mi yaptığına bağlı.
telnet Kullanarak
telnet, en hızlı manuel test yöntemidir. Hedef sunucuya ağ erişimi olan herhangi bir makineden şunu çalıştır:
telnet example.com 80
Port 80 açıksa ve bir web sunucusu dinliyorsa, boş bir imleç ya da HTTP banner'ı görürsün. Kapalı ya da filtrelenmiş durumdaysa "Connection refused" hatası alırsın ya da komut zaman aşımına uğrayana kadar askıda kalır.
curl Kullanarak
curl daha fazla ayrıntı sunar - gerçek HTTP yanıtını gösterir:
curl -v http://example.com
-v
bayrağı, TCP handshake ve yanıt header'ları dahil ayrıntılı çıktı yazdırır. Başarılı bir bağlantıda
* Connected to example.com (93.184.216.34) port 80
görürsün. Başarısız olduğunda ise
curl: (7) Failed to connect
çıkar.
nmap Kullanarak
nmap, port tarama konusunda altın standarttır. Port 80'i özellikle test etmek için:
nmap -p 80 example.com
Sonuç üç durumdan birini gösterir: open (bir şey dinliyor), closed (port erişilebilir ama hiçbir şey dinlemiyor) ya da filtered (bir firewall paketleri düşürüyor ve nmap durumu belirleyemiyor).
Windows'ta PowerShell Kullanarak
Test-NetConnection -ComputerName example.com -Port 80
PowerShell'in
Test-NetConnection
komutu temiz bir
TcpTestSucceeded : True
ya da
False
döndürür, bu da betik yazmayı kolaylaştırır. Windows'ta port kontrolüne dair kapsamlı bir rehber için
Windows'ta açık portları kontrol etme
yazısına bakabilirsin.
netstat ile Port 80 İncelemesi
Sunucunun kendisindeyken,
netstat
port 80'e hangi sürecin bağlı olduğunu tam olarak gösterir. "Bu makinede port 80'i gerçekten dinleyen bir şey var mı?" sorusuna yanıt arıyorsan kullanman gereken araç budur.
Linux / macOS
sudo netstat -tlnp | grep :80
Bayrakların açıklaması:
-
-t- yalnızca TCP bağlantıları -
-l- yalnızca dinleme durumundaki soketler -
-n- sayısal adresleri göster (daha hızlı, DNS sorgularını atlar) -
-p- süreç adını ve PID'i göster
Tipik bir sonuç şuna benzer:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx
. Bu, nginx'in (PID 1234) port 80'de tüm arayüzleri dinlediğini söyler.
Modern Linux sistemlerinde
ss
,
netstat
'a göre daha hızlı ve tercih edilir:
sudo ss -tlnp | grep :80
Windows
netstat -ano | findstr :80
Bu komut, port 80 ile ilgili tüm bağlantıları ve PID'lerini listeler. PID'den (örneğin PID 4892) süreç adını bulmak için:
tasklist /fi "pid eq 4892"
Firewall Tarafından Engellenen Port 80 Nasıl Teşhis Edilir?
Firewall engellemesi, web sunucun yerel olarak sorunsuz çalışmasına rağmen port 80'in dışarıdan kapalı görünmesinin en yaygın nedenidir. Engellenmenin gerçekleşebileceği üç katman vardır:
| Katman | Nereye Bakılır? | Araç |
|---|---|---|
| İşletim sistemi firewall'ı (sunucu) | iptables / ufw (Linux), Windows Defender Firewall |
iptables -L -n
veya Windows Firewall kuralları
|
| Bulut güvenlik grubu | AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules | Bulut konsolu gelen trafik kuralları |
| Ağ/ISP firewall'ı | Router ACL, ISP konut port engelleme | ISP ile iletişime geç ya da harici port tarayıcı kullan |
Linux'ta iptables Kontrolü
sudo iptables -L INPUT -n -v | grep 80
Port 80 için DROP ya da REJECT kuralı görürsen, sorun oradadır. ufw ile port 80'e izin vermek için:
sudo ufw allow 80/tcp
sudo ufw reload
AWS Security Groups Kontrolü
Sunucun EC2 üzerindeyse, EC2 konsoluna git - Security Groups - Inbound rules. TCP port 80'e
0.0.0.0/0
(ya da belirli IP aralığın) üzerinden izin veren bir kural eklemen gerekir. Bu kural olmadan, tüm port 80 trafiği işletim sistemi firewall'ına bile ulaşmadan düşürülür.
Linux tarafındaki port teşhisine daha ayrıntılı bakmak istiyorsan, iptables, ufw, firewalld ve nftables'ı ele alan Linux'ta açık portları kontrol etme rehberini inceleyebilirsin.
HTTP Portu Yanıt Vermiyor: Yaygın Nedenler ve Çözümler
HTTP portu yanıt vermediğinde, sorun genellikle şu kategorilerden birine girer:
-
Web sunucusu çalışmıyor
-
systemctl status nginxveyasystemctl status apache2ile kontrol et. Durmuşsa başlat:sudo systemctl start nginx. -
Web sunucusu başlarken çöktü
- Logları kontrol et:
sudo journalctl -u nginx --since "10 minutes ago". Yapılandırma sözdizimi hatası ya da port çakışması burada kayıt altına alınır. -
Sunucu yalnızca localhost'a bağlı
- Sunucu yapılandırman
listen 0.0.0.0:80yerinelisten 127.0.0.1:80diyorsa, harici bağlantıları kabul etmez. Sunucu yapılandırmasındaki bind adresini düzelt. - Port 80 zaten kullanımda - Web sunucun başlamadan önce başka bir süreç port 80'i aldı. netstat ile tespit et, ardından o süreci durdur ya da servislerden birini farklı bir port kullanacak şekilde yeniden yapılandır.
-
SELinux veya AppArmor bind'ı engelliyor
- RHEL/CentOS sistemlerinde SELinux, standart dışı bir sürecin port 80'e bind olmasını engelleyebilir. Reddetme kayıtları için
ausearch -m AVC -ts recent'i kontrol et.
curl http://127.0.0.1
komutunu çalıştır. Bu çalışıyorsa ama harici bağlantılar başarısız oluyorsa, sorun web sunucusunda değil, firewall ya da ağ kuralındadır.
Port 80 Bağlantısını Ağ Dışından Test Et
Kendi makinenden test yapmak yanıltıcı olabilir - sunucuyla aynı LAN üzerinde olabilirsin ve bu, harici trafiğe uygulanan firewall kurallarını devre dışı bırakır. Port 80 bağlantısını gerçek bir ziyaretçinin deneyimleyeceği şekilde test etmek için harici bir test gereklidir.
Sunucunun HTTP yanıt header'larını dışarıdan kontrol etmek için HTTP Headers Checker aracımızı kullanabilirsin. Araç, verdiğin URL'den header'ları çeker ve bir tarayıcının tam olarak ne aldığını gösterir - durum kodları, sunucu türü, yönlendirme zincirleri ve daha fazlası - hepsi harici bir bakış açısından.
Diğer harici seçenekler:
- Çevrimiçi port tarayıcıları - portchecker.co veya canyouseeme.org gibi siteler, kendi sunucularından bir IP ve port numarasını test etmeni sağlar.
-
VPS veya bulut kabuğundan
- Farklı bir bölgede ücretsiz katmanlı bir bulut instance'ı başlatıp oradan
nc -zv your-server-ip 80çalıştır. -
nc (netcat) ile yerel test
-
nc -zv example.com 80komutu, çoğu Linux/macOS sistemine ekstra bir şey yüklemeden hızlı bir açık/kapalı sonucu verir.
Port 80 ve Port 443: Hangisi Ne Zaman Önemlidir?
Port 443, HTTPS'i (TLS üzerinden şifreli HTTP) yönetir. Modern sitelerin büyük çoğunluğu, port 80 trafiğini anında port 443'e yönlendirir. Ancak port 80'in hala önemli olduğu birkaç durum var:
- ACME/Let's Encrypt HTTP-01 doğrulama zorlukları - Let's Encrypt'in certbot aracı, alan adı sahipliğini doğrulamak için port 80'i kullanır. Port 80 engellenirse sertifika düzenleme başarısız olur.
- TLS olmayan dahili servisler - Pek çok dahili araç, izleme ajanı ve mikro servis, özel bir ağ içinde port 80 üzerinden düz HTTP ile iletişim kurar.
- Eski istemciler ve IoT cihazları - Bazı gömülü cihazlar ve eski istemciler TLS'i desteklemez ve port 80'e bağımlıdır.
- Yönlendirme altyapısı - Her şeyi HTTPS üzerinden sunsan bile, HTTP isteklerini yakalayıp yönlendirebilmek için port 80'in açık olması gerekir; aksi halde kullanıcılar bağlantı hatasıyla karşılaşır.
Port 80'in gerçekte ne döndürdüğünü anında gör
HTTP Headers Checker aracımız, herhangi bir URL'den canlı yanıtı çeker; böylece port 80'in açık olduğunu doğrulayabilir, yönlendirme zincirlerini inceleyebilir ve sunucunun gönderdiği tam durum kodlarını görebilirsin - komut satırına ihtiyaç yok.
HTTP Header'larını Şimdi Kontrol Et →
Linux'ta
sudo ss -tlnp | grep :80
veya
sudo netstat -tlnp | grep :80
komutunu çalıştır. Her iki komut da port 80'e bağlı süreç adını ve PID'i gösterir. Windows'ta PID'i almak için
netstat -ano | findstr :80
, süreç adını bulmak için ise
tasklist /fi "pid eq [PID]"
kullan. Portu en sık kullanan süreçler arasında nginx, apache2, IIS ve Node.js sunucuları sayılabilir.
Aynı netstat veya ss komutlarını kullan, ancak 8080 için filtrele: Linux'ta
sudo ss -tlnp | grep :8080
, Windows'ta
netstat -ano | findstr :8080
. Port 8080, geliştirme sunucuları, Tomcat, Jenkins ve proxy'ler tarafından yaygın olarak kullanılan alternatif bir HTTP portudur. Oraya bağlı bir şey varsa, onu durdurman ya da yeni servisini farklı bir port kullanacak şekilde yapılandırman gerekir.
Özel web sunucularında ve VPS instance'larında evet - port 80 tipik olarak açıktır ve beklenir. Ev internet bağlantılarında ise pek çok ISP, müşterilerin ev bağlantılarında genel sunucu barındırmasını önlemek amacıyla gelen port 80 trafiğini engeller. Bulut instance'larında port 80, güvenlik grubunda açıkça gelen trafik kuralı ekleyene kadar varsayılan olarak genellikle kapalıdır.
Sunucu dışından
nmap -p 80 your-server-ip
veya
telnet your-server-ip 80
kullan. Sunucunun kendisinden ise bir şeyin dinleyip dinlemediğini doğrulamak için
ss -tlnp | grep :80
çalıştır. Firewall kurallarını da kontrol et - Linux'ta ufw kullanıyorsan
sudo ufw status
komutunu çalıştırarak port 80'in izin verilenler listesinde olup olmadığını görebilirsin.
Linux'ta ufw ile:
sudo ufw allow 80/tcp
. Doğrudan iptables ile:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
. Windows'ta, Windows Defender Firewall'a TCP port 80 için gelen trafik kuralı ekle. Bulut sunucusunda ise güvenlik grubuna ya da ağ güvenlik grubuna, istenen kaynak aralığından TCP port 80'e izin veren gelen trafik kuralı ekle.
Port 80, bir web sunucusunun HTTP trafiği sunacak şekilde yapılandırıldığında açık olur; bu, herkese açık her web sitesinin standardıdır. HTTP'yi HTTPS'e (port 443) yönlendiren sunucularda da açık kalır; çünkü yönlendirmenin kendisi, ilk port 80 bağlantısının kabul edilmesini gerektirir. Let's Encrypt certbot gibi sertifika yenileme araçları da HTTP-01 alan adı doğrulama zorlukları için port 80'e ihtiyaç duyar.
Windows Defender Firewall'ı Gelişmiş Güvenlik ile aç, "Gelen Kurallar"a tıkla, ardından "Yeni Kural"ı seç. "Port"u seç, TCP'yi işaretle, yerel port olarak 80 gir, "Bağlantıya izin ver"i seç, tüm profillere uygula (Etki Alanı, Özel, Genel) ve kurala bir ad ver. Alternatif olarak, yükseltilmiş bir PowerShell isteminde şunu çalıştır:
New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
.
Evet, Linux ve macOS'ta port 80 ayrıcalıklı bir porttur (0-1023 arasındaki portlar bind yapabilmek için root veya CAP_NET_BIND_SERVICE yetkisi gerektirir). Bu, sıradan bir kullanıcı sürecinin yükseltilmiş izinler olmadan port 80'i dinleyemeyeceği anlamına gelir. nginx ve Apache gibi web sunucuları genellikle port 80'e bind olmak için root olarak başlatılır, ardından istek işleme için daha düşük yetkili bir kullanıcıya geçer. Windows'ta port 80 için bu tür bir kısıtlama yoktur.
Port 80 (HTTP), TLS'in gereksiz ya da pratik olmadığı senaryolarda port 443 (HTTPS) yerine kullanılır - güvenilir özel bir ağdaki dahili mikro servisler, yerel geliştirme ortamları veya TLS desteği olmayan IoT cihazları gibi. Port 80, Let's Encrypt HTTP-01 sertifika doğrulama zorlukları için de gereklidir. Herkese açık siteler için TLS ile port 443 kesinlikle tercih edilmeli; port 80 ise yalnızca yönlendirmeler için açık tutulmalıdır.
Hayır, bunlar farklı portlardır. Port 80, HTTP için IANA tarafından atanmış standarttır ve tarayıcılar port belirtilmediğinde otomatik olarak bunu kullanır. Port 8000 ise resmi olmayan bir alternatiftir ve geliştirme sunucuları tarafından yaygın olarak kullanılır - Python'un
python -m http.server
komutu varsayılan olarak 8000'i kullanır, Django'nun geliştirme sunucusu da öyle. Port 8000 üzerindeki bir servise erişmek için URL'de açıkça belirtmen gerekir:
http://example.com:8000
.