# Nginx başlamıyor: "bind() to 0.0.0.0:80 failed (98: Address already in use)"

https://kervanhosting.com/bilgi-bankasi/makale/nginx-bind-address-already-in-use-80-portu-kullaniliyor

Nginx'i başlatmaya ya da yeniden yüklemeye çalışıyorsunuz ve şu hatayı alıyorsunuz:

```
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
```

Bir port (80, 443) aynı anda yalnızca bir program tarafından dinlenebilir. Başka bir program o portu zaten tutuyorsa Nginx başlayamaz. Çözüm, portu tutanı bulmak ve ya onu durdurmak ya da portlarını ayırmaktır.

## Portu kim kullanıyor?

```
sudo ss -tlnp | grep -E ":80 |:443 "
sudo lsof -i :80
```

Çıktıda son sütunda programın adı ve süreç numarası yazar: `users:(("apache2",pid=1234,fd=4))`. En sık görülen suçlular:

- **Apache (`apache2` ya da `httpd`):** Bazı paketler (PHP kurarken `apache2` bağımlılığı) Apache'yi otomatik kurup başlatır. Nginx kullanacaksanız Apache'yi durdurup kapatın: `sudo systemctl stop apache2 && sudo systemctl disable apache2`.
- **Başka bir Nginx süreci:** Yarım kalmış eski bir Nginx kapanmadı. `ps aux | grep nginx` ile bakın; `sudo systemctl stop nginx` ya da gerekirse `sudo pkill nginx` sonra `sudo systemctl start nginx`.
- **Docker konteyneri:** `-p 80:80` ile 80'i tutan bir konteyner. `docker ps` ile bulun ve durdurun ya da başka bir porta alın.
- **Caddy, Traefik, bir Node uygulaması** gibi doğrudan 80'e bağlanan başka bir yazılım.

## Çözüm seçenekleri

1. **Diğer programı kapatın** (gerekmiyorsa ve kalıcı kapatmak için `disable` kullanın).
2. **Portları ayırın:** Nginx 80'de, diğeri örneğin 8080'de dinlesin; Nginx'ten `proxy_pass` ile ona yönlendirin: [Nginx ters proxy](https://kervanhosting.com/bilgi-bankasi/makale/nginx-reverse-proxy-node-js-uygulamasini-nginx-arkasinda-yayinlama).
3. Nginx'in ayarında aynı portun iki yerde `listen` ile tanımlanıp tanımlanmadığına bakın: aynı `listen 80;` iki farklı dosyada `default_server` olarak işaretlenmişse de benzer hata alırsınız (bu durumda hata mesajı "duplicate default server" gibi olur): `sudo nginx -t`.

## Kontrol

```
sudo nginx -t
sudo systemctl start nginx
sudo systemctl status nginx
sudo ss -tlnp | grep nginx
```

Son komutta Nginx'i `:80` ve `:443` üzerinde görmelisiniz.

## IPv6 ayrıntısı

Hata yalnızca `[::]:80` için çıkıyorsa, sunucuda IPv6 kapalı olabilir ya da başka bir yazılım yalnızca IPv6'yı tutuyordur. Nginx'te `listen [::]:80 ipv6only=on;` ile ayırabilir ya da kullanmıyorsanız o `listen` satırını kaldırabilirsiniz.

Nginx ayarını değiştirdikten sonra siteler açılmıyorsa [sitem açılmıyor](https://kervanhosting.com/bilgi-bankasi/makale/sitem-acilmiyor-adim-adim-kontrol-listesi) kontrol listesine, güvenlik duvarında 80 ve 443'ün açık olduğunu doğrulamak için [UFW rehberine](https://kervanhosting.com/bilgi-bankasi/makale/ufw-ile-port-acma-ve-kapatma-ubuntu-guvenlik-duvari) bakın.

## Sık sorulanlar

### Ubuntu'da PHP kurunca Apache geldi, ne yapmalıyım?

PHP'yi `php-fpm` olarak kurduysanız Apache gelmez. `libapache2-mod-php` bağımlılığıyla geldiyse `sudo apt purge apache2*` ile kaldırabilirsiniz (Nginx kullanacaksanız).

### Hata sadece reload'da çıkıyor.

Reload sırasında yeni bir `listen` eklediyseniz Nginx yeni portu bağlayamıyor demektir. Portu tutanı bulun ya da tam yeniden başlatma (restart) yapın.

### Port boş ama yine de hata veriyor.

Süreçler kapanırken port kısa süre tutulabilir. Birkaç saniye bekleyip tekrar deneyin. Süregelen durumda `sudo ss -tlnp` ile gerçekten boş olduğunu doğrulayın.

**İlgili makaleler**

- [Nginx 502 Bad Gateway hatası: nedenleri ve çözümü](https://kervanhosting.com/bilgi-bankasi/makale/nginx-502-bad-gateway-hatasi-nedenleri-ve-cozumu)
- [Linux sunucuya web sitesi (Nginx) nasıl kurulur?](https://kervanhosting.com/bilgi-bankasi/makale/linux-sunucuya-web-sitesi-nginx-nasil-kurulur)
- [Docker nasıl kurulur?](https://kervanhosting.com/bilgi-bankasi/makale/docker-nasil-kurulur)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
