O zamanlar, Nginx ile ilgili bu tür hatalarla karşılaşan birçok geliştiricinin de benzer sorunlar yaşadığını fark ettim. Çözüm için bazı adımlar izlemem gerektiğini öğrendim. Şimdi, bu yazıda bu hataları nasıl düzelttiğimi, hangi adımları takip ettiğimi ve Nginx'i düzgün bir şekilde nasıl çalıştırdığımı sizlerle paylaşacağım.
1. Nginx Reverse Proxy Yapılandırma Hatası: 403 Forbidden
Adım 1: Nginx Yapılandırma Dosyasını Kontrol Et
İlk olarak, Nginx yapılandırma dosyanızı kontrol etmeniz gerekir. `/etc/nginx/sites-available/default` ya da `/etc/nginx/nginx.conf` dosyasını açarak, doğru bir şekilde proxy_pass talimatlarını yerleştirip yerleştirmediğinizi kontrol edin.
```nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000; # Hedef uygulama adresi
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
Yukarıdaki yapılandırma örneğinde, Nginx tüm gelen istekleri 3000 numaralı porttaki hedef sunucuya yönlendirecek. Eğer bu yönlendirme hatalıysa, 403 hatası alabilirsiniz.
Adım 2: Dosya ve Dizin İzinlerini Kontrol Et
Hedef sunucuya giden isteklerinizde dosya ve dizin izinlerini kontrol etmeniz de önemli bir adımdır. Hedef uygulamanın dosyalarına doğru izinler verilmiş olmalı. `chmod` komutuyla izinleri düzenleyebilirsiniz:
```bash
sudo chmod -R 755 /var/www
```
Bu, dosya ve dizinlerin doğru erişim izinlerine sahip olmasını sağlar.
Adım 3: Nginx’i Yeniden Başlatın
Yapılandırma dosyalarındaki değişikliklerden sonra Nginx'i yeniden başlatmayı unutmayın:
```bash
sudo systemctl restart nginx
```
2. 502 Bad Gateway Hatası: Sunucu İletişim Problemi
Adım 1: Hedef Sunucu Durumunu Kontrol Et
İlk adımda, hedef uygulamanın çalıştığından emin olun. Aşağıdaki komutlarla, hedef sunucunun doğru bir şekilde çalışıp çalışmadığını kontrol edebilirsiniz:
```bash
ps aux | grep node
```
Eğer hedef uygulama çalışıyorsa, port numarasını ve adresini doğru bir şekilde belirttiğinizden emin olun.
Adım 2: Hedef Sunucuyu Yeniden Başlatın
Eğer her şey doğru görünüyor ama yine de 502 hatası alıyorsanız, hedef sunucuyu yeniden başlatmak iyi bir çözüm olabilir:
```bash
sudo systemctl restart nodejs-app
```
Adım 3: Nginx ve Uygulama Sunucusu Arasındaki Bağlantıyı Test Edin
Nginx ve uygulama sunucusu arasındaki bağlantıyı test etmek için şu komutları kullanabilirsiniz:
```bash
curl -I http://localhost:3000
```
Eğer başarılı bir yanıt alırsanız, bağlantı doğru şekilde kurulmuş demektir.
3. Nginx’in Günlük Dosyalarını Kontrol Et
```bash
tail -f /var/log/nginx/error.log
```
Bu günlük dosyasındaki hatalar, sorunun ne olduğunu daha net bir şekilde anlamanızı sağlar.
4. Sorun Çözümü İçin Öneriler
- Proxy Yönlendirmelerini Düzenleyin: `proxy_pass` komutunun doğru çalıştığından emin olun.
- Hedef Sunucunun Durumunu Kontrol Edin: Uygulamanın çalışıp çalışmadığını ve doğru port numarasını kontrol edin.
- Günlük Dosyalarını İnceleyin: Nginx’in günlük dosyalarını düzenli olarak kontrol ederek hataları daha hızlı çözebilirsiniz.
- Bağlantı Problemlerini Test Edin: `curl` komutu ile Nginx’in hedef sunucuya doğru bir şekilde bağlandığından emin olun.
Açıkçası, Nginx ve Reverse Proxy yapılandırmaları bazen kafa karıştırıcı olabilir, ancak bu adımları takip ederek sorunları çözebilirsiniz.