Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X
X
X
X

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
NGINX Teknik Rehberi

NGINX 403 Forbidden Hatası Nasıl Çözülür?

403 Forbidden, NGINX’in isteği anladığı ancak kaynağa erişimi reddettiği anlamına gelir. Sorun eksik index dosyası, klasör yürütme izni, sahiplik, allow/deny kuralı, SELinux, symlink politikası veya güvenlik katmanından kaynaklanabilir.

403 ForbiddenPermission Deniedallow/denySELinuxIndex
root@sunucu:~SSH
2026/07/17 03:31:08 [error] 2261#2261: *731 directory index of "/var/www/example/" is forbidden
2026/07/17 03:31:12 [error] 2261#2261: *734 open() "/var/www/example/index.php" failed (13: Permission denied)
İstek akışıİstemci, NGINX ve backend arasındaki kopma noktası
YapılandırmaEtkin server ve location bloklarının doğrulanması
Canlı teşhisLog, socket, port ve servis kontrolleri
Güvenli uygulamaTest, kontrollü reload ve sonuç doğrulaması
01
Teknik açıklama

NGINX 403 Forbidden ne anlama gelir?

403, dosya bulunamadı anlamına gelen 404’ten farklıdır. NGINX kaynağı veya dizini görüyor olabilir fakat yapılandırma ya da işletim sistemi erişimi isteği engeller.

Dizin isteğinde index.php veya index.html bulunmaz ve autoindex kapalıysa NGINX 'directory index ... is forbidden' yazar. Bu durumda izinleri artırmak yerine document root ve index yönergesi doğrulanmalıdır.

Dosyanın 644, klasörün 755 olması tek başına yeterli değildir. NGINX worker kullanıcısının document root’a kadar tüm üst klasörlerde yürütme izni bulunmalıdır.

allow ve deny kuralları sırayla değerlendirilir. Üst http/server bloğundan miras kalan bir deny veya yanlış IP ağı yalnız belirli ziyaretçilerin 403 görmesine yol açabilir.

RHEL tabanlı sistemlerde Unix izinleri doğru görünse bile SELinux context erişimi engelleyebilir. Güvenlik katmanı kapatılmadan önce AVC kaydı incelenmelidir.

403 çözümünde 777 kullanmak tanı değil güvenlik açığıdır; namei, stat, NGINX worker ve güvenlik loglarıyla erişim zinciri kanıtlanmalıdır.

02
Log mesajları ve anlamları

403 Forbidden, permission denied ve erişim kuralı mesajları

E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.

8 kayıt
01kritik

directory index of ... is forbidden

Anlamı: Dizinde uygun index dosyası yok veya dizin listeleme kapalı.

Muhtemel neden: Yanlış root, eksik index veya index yönergesi.

Document root içeriğini ve etkin index satırını kontrol edin.
02kritik

open() ... failed (13: Permission denied)

Anlamı: NGINX dosyayı işletim sistemi seviyesinde açamıyor.

Muhtemel neden: Dosya/klasör izinleri, sahiplik, ACL veya SELinux.

namei -l ve getfacl ile tüm yol bileşenlerini inceleyin.
03uyari

access forbidden by rule

Anlamı: NGINX allow/deny veya benzeri erişim kuralı isteği engelledi.

Muhtemel neden: Yanlış IP ağı, include dosyası veya üst bloktan miras.

nginx -T çıktısında allow, deny ve satisfy kurallarını bulun.
04uyari

symbolic link not allowed or link target not accessible

Anlamı: Symlink politikası veya hedef yol erişimi reddedildi.

Muhtemel neden: disable_symlinks, izin veya sahiplik uyumsuzluğu.

readlink -f ve ilgili NGINX symlink yönergesini kontrol edin.
05uyari

403 Forbidden nginx

Anlamı: Genel tarayıcı mesajı kök nedeni göstermiyor.

Muhtemel neden: Index, izin, erişim kuralı veya güvenlik katmanı.

Aynı isteğin error_log satırını bulun.
06uyari

client denied by server configuration

Anlamı: Sunucu yapılandırması istemciyi reddetti.

Muhtemel neden: IP kuralı, location deny veya Plesk ek direktifi.

İstemci IP’si ile etkin kuralları karşılaştırın.
07bilgi

SELinux avc: denied

Anlamı: Kernel güvenlik politikası NGINX erişimini engelledi.

Muhtemel neden: Yanlış context veya gerekli boolean kapalı.

ausearch ile kaydı inceleyin ve kalıcı context düzeltmesi planlayın.
08bilgi

Primary script unknown

Anlamı: FastCGI hedefi yanlış script yoluna işaret ediyor.

Muhtemel neden: root/alias ve SCRIPT_FILENAME uyumsuzluğu.

fastcgi_param SCRIPT_FILENAME değerini document root ile doğrulayın.

Bu ifadeyle eşleşen kayıt bulunamadı.

03
Güvenli ilk inceleme

SSH teşhis komutları ve hangi çıktıya bakılmalı?

Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.

Yol izin zinciri
namei -l /var/www/example/index.php
stat /var/www/example /var/www/example/index.php
getfacl -p /var/www/example 2>/dev/null

Üst klasörler dâhil tüm erişim zincirini gösterir.

NGINX worker kullanıcısı
ps -eo user,group,cmd | grep '[n]ginx: worker'
grep -n '^user' /etc/nginx/nginx.conf

Dosyalara erişmesi gereken gerçek kullanıcıyı belirler.

Root, index ve erişim kuralları
nginx -T | grep -nE 'server_name|root |alias |index |allow |deny |disable_symlinks'

Etkin sanal host ve erişim yönergelerini gösterir.

SELinux kontrolü
getenforce
ls -Zd /var/www/example
ausearch -m AVC -ts recent | tail -n 50

Unix izinleri dışında SELinux engelini doğrular.

Domain logları
tail -n 150 /var/log/nginx/error.log
curl -skI https://example.com/

İstek ve log satırını aynı anda test eder.

Güvenli reload
nginx -t && systemctl reload nginx

Yapılandırma başarılıysa kesintisiz uygular.

04
Barındırma ortamına göre

Ubuntu/Debian, AlmaLinux/CloudLinux ve Plesk kontrolleri

NGINX hatasının temel nedeni aynı olsa da paket yolları, servis adları, güvenlik katmanları ve sanal host yönetimi kullanılan Linux dağıtımına veya Plesk altyapısına göre değişir.

Ubuntu / Debian

NGINX 403 Forbidden için systemd, paket yolu ve journald kontrolleri.

  • Önce etkin NGINX yapılandırmasını ve servis durumunu doğrulayın.
  • Domain error logu ile systemd günlüğünü aynı zaman aralığında karşılaştırın.
  • Değişiklikten önce nginx -t, ardından kesintisiz reload uygulayın.
namei -l /var/www/example/index.php nginx -T | grep -nE 'root |index |allow |deny ' tail -n 100 /var/log/nginx/error.log

AlmaLinux / CloudLinux

NGINX 403 Forbidden için SELinux, PHP-FPM pool ve RHEL tabanlı servis kontrolleri.

  • NGINX ve ilgili backend servislerinin aktif durumunu kontrol edin.
  • SELinux AVC kayıtlarını ve güvenlik katmanlarını gözden geçirin.
  • Konfigürasyon testi geçmeden servisi yeniden başlatmayın.
namei -l /var/www/example/index.php getenforce ausearch -m AVC -ts recent | tail -n 30

Plesk Obsidian

Plesk tarafından üretilen NGINX sanal host dosyalarında nginx 403 forbidden kontrolü.

  • Domains > Apache & nginx Settings bölümündeki ek direktifleri inceleyin.
  • Elle oluşturulan ve Plesk tarafından üretilen dosyaları birbirinden ayırın.
  • Gerekirse yalnız ilgili domain için web yapılandırmasını yeniden oluşturun.
tail -n 100 /var/www/vhosts/system/example.com/logs/proxy_error_log plesk repair web example.com -n nginx -t
05
Güvenli çözüm sırası

NGINX 403 Forbidden çözüm sırası

Önce NGINX’in hangi nedenle reddettiğini belirleyin; index, izin, erişim kuralı ve güvenlik katmanını ayrı ayrı test edin.

1

403 üreten URL ve istemciyi kaydedin

Hata herkeste mi, yalnız belirli IP veya dizinde mi ayırın.

curl -skI https://example.com/korumali/
2

Error log mesajını sınıflandırın

Directory index, permission denied veya access forbidden ifadesini bulun.

tail -n 100 /var/log/nginx/error.log
3

Document root ve index dosyasını doğrulayın

Etkin server bloğunun gerçek dosya yoluna baktığını kontrol edin.

nginx -T | grep -nE 'server_name|root |index '
4

İzin zincirini test edin

Tüm üst klasörlerde NGINX worker için yürütme izni bulunmalıdır.

namei -l /var/www/example/index.php
5

Erişim ve güvenlik kurallarını inceleyin

allow/deny, ACL, SELinux ve WAF kayıtlarını ayırın.

nginx -T | grep -nE 'allow |deny '; ausearch -m AVC -ts recent | tail
6

En dar düzeltmeyi uygulayıp doğrulayın

Yalnız hatalı yol/kural üzerinde değişiklik yapın ve yeni 403 kaydını kontrol edin.

nginx -t && systemctl reload nginx curl -skI https://example.com/korumali/
06
Belirtiye göre ayrım

Özel senaryolar ve karar ağacı

Dizin açılıyor ama index yok

Doğru index dosyasını ekleyin veya bilinçli ise autoindex kararını verin.

ls -la /var/www/example; nginx -T | grep -n 'index '
Yalnız tek kullanıcı/IP etkileniyor

allow/deny, WAF ve fail2ban kayıtlarını kontrol edin.

nginx -T | grep -nE 'allow |deny '
Symlink hedefinde 403

Gerçek hedefin izinleri ve disable_symlinks yönergesi incelenmelidir.

readlink -f /var/www/example/current; namei -l /var/www/example/current
RHEL’de izinler doğru ama 403

SELinux AVC kaydı ve dosya context’i kontrol edilmelidir.

ls -Zd /var/www/example; ausearch -m AVC -ts recent | tail
WordPress uploads 403

Uploads sahipliği, hotlink/WAF kuralı ve location eşleşmesini ayırın.

curl -skI https://example.com/wp-content/uploads/test.jpg
Plesk ek NGINX direktifi sonrası 403

Domains ekranındaki Additional nginx directives içeriğini gözden geçirin.

plesk repair web example.com -n

Kesinlikle yapmayın

  • Klasör ve dosyaları topluca 777 yapmayın.
  • SELinux’u kalıcı kapatıp sorunu gizlemeyin.
  • Dizin listelemeyi gereksiz yere tüm sunucuda açmayın.
  • Plesk vhost dosyalarını doğrudan kalıcı düzenlemeyin.
  • 403’ü 404’e çevirerek erişim sorununu çözüldü saymayın.

Çözüm sonrası doğrulama

  • Beklenen index veya dosya 2xx/3xx kodu döndürmektedir.
  • NGINX error_log yeni permission denied kaydı üretmemektedir.
  • İzinler en az yetki prensibine uygundur.
  • SELinux enforcing durumda doğru context ile çalışmaktadır.
  • Yalnız hedeflenen IP/dizin erişim kuralı uygulanmaktadır.
07
Resmî teknik kaynaklar

NGINX ve ilgili bileşenlerin resmî dokümantasyonu

08
İç SEO içerik kümesi

İlgili NGINX hata çözümleri

09
Sık sorulan sorular

NGINX 403 Forbidden hakkında merak edilenler

NGINX 403 Forbidden neden olur?

Eksik index dosyası, yanlış root, dosya izinleri, sahiplik, allow/deny kuralları, SELinux veya güvenlik katmanı en yaygın nedenlerdir.

Directory index of is forbidden nasıl çözülür?

Önce doğru document root içinde index.php veya index.html bulunduğunu ve index yönergesinin bu dosyayı içerdiğini doğrulayın.

403 için chmod 777 kullanılmalı mı?

Hayır. 777 güvenlik açığı oluşturur ve gerçek sahibi/erişim zinciri sorununu gizler. namei, stat ve worker kullanıcı kontrolü yapılmalıdır.

İzinler doğruyken neden 403 olur?

SELinux, ACL, allow/deny, WAF, symlink politikası veya yanlış document root Unix izinleri doğru olsa bile 403 üretebilir.

NGINX worker kullanıcısı nasıl bulunur?

nginx.conf içindeki user yönergesini ve çalışan worker process kullanıcılarını ps komutuyla kontrol edin.

WordPress NGINX 403 hatası neden olur?

Uploads izinleri, güvenlik eklentisi, WAF, hotlink kuralı, deny location veya yanlış PHP script yolu neden olabilir.

Plesk’te 403 nasıl onarılır?

Önce domain proxy_error_log ve ek NGINX direktifleri kontrol edilmeli; gerekirse ilgili domain için plesk repair web komutu kullanılmalıdır.

EKA YAZILIM VE BİLİŞİM SİSTEMLERİ

Sunucunuzdaki hatayı kalıcı olarak çözelim

cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.

Sunucu Desteği Al WhatsApp
Top