Apache’de “Request-URI Too Long” hatası, bir istemcinin sunucunun önceden tanımlanmış uzunluk sınırını aşan bir URL göndermesi durumunda meydana gelir. Bu sorun, kullanıcıların belirli sayfalara erişimini engelleyebilir ve genellikle URL’de büyük miktarda veri geçiren uygulamalarda karşılaşılır.

Eğer optimize edilmiş sunucu yapılandırmaları ile yüksek performanslı bir barındırma çözümü arıyorsanız, Ava Hosting , bu tür hataları etkili bir şekilde önlemek ve çözmek için tam Apache desteği ile VPS ve özel sunucular sunmaktadır.

Request-URI Too Long Hatasının Nedenleri

  1. Aşırı Sorgu Parametreleri: URL’deki çok fazla parametre, izin verilen sınırı aşabilir.
  2. Web Uygulamalarındaki Uzun URL’ler: Bazı uygulamalar dinamik olarak uzun URL’ler oluşturur ve bu soruna yol açar.
  3. Yanlış Yapılandırılmış Sunucu Ayarları: Apache’nin varsayılan yapılandırması uzun URL’leri kısıtlayabilir.
  4. Proxy Sunucu veya Yük Dengeleyici Sınırlamaları: Ara sunucular, URI uzunlukları üzerinde kendi sınırlarını koyabilir.
  5. Güvenlik Kısıtlamaları: mod_security gibi bazı güvenlik modülleri, uzun istek URI’lerini engelleyebilir.

Request-URI Too Long Hatasını Nasıl Düzeltirsiniz

1. Apache URI Uzunluk Sınırını Artırın

İzin verilen istek uzunluğunu artırmak için Apache yapılandırma dosyanızdaki LimitRequestLine direktifini değiştirin.

  1. Apache yapılandırma dosyasını açın (httpd.conf veya apache2.conf):
    sudo nano /etc/apache2/apache2.conf  # Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf  # CentOS/RHEL
  2. Aşağıdaki satırı ekleyin veya değiştirin:
    LimitRequestLine 8190

    Varsayılan değer 8190 bayt (8 KB) dir. Gerekirse bunu 16384 (16 KB) veya daha yüksek bir değere artırabilirsiniz.

  3. Değişiklikleri uygulamak için Apache’yi yeniden başlatın:
    sudo systemctl restart apache2  # Debian/Ubuntu
    sudo systemctl restart httpd  # CentOS/RHEL

2. Header Alanı Sınırını Artırın

LimitRequestFieldSize direktifi, bir HTTP isteği başlık alanının maksimum boyutunu kontrol eder. Eğer uzun URL’leriniz varsa, bu değeri artırmak yardımcı olabilir.

  1. Apache yapılandırma dosyasını açın:
    sudo nano /etc/apache2/apache2.conf  # Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf  # CentOS/RHEL
  2. Aşağıdaki satırı ekleyin veya değiştirin:
    LimitRequestFieldSize 16384
  3. Apache’yi yeniden başlatın:
    sudo systemctl restart apache2  # Debian/Ubuntu
    sudo systemctl restart httpd  # CentOS/RHEL

3. Web Uygulama Kodunu Kontrol Edin ve Değiştirin

  • Eğer uygulamanız GET istekleri aracılığıyla çok fazla veri geçiriyorsa, katı uzunluk sınırlamaları olmayan POST isteklerine geçmeyi düşünün.
  • Gereksiz parametreleri en aza indirmek için URL yapılarını optimize edin.
  • URL’de veri geçirmek yerine büyük miktarda veriyi saklamak için çerezler veya oturumlar kullanın.

4. Proxy Sunucuları veya Yük Dengeleyicileri Yapılandırın

Eğer sunucunuz bir proxy veya yük dengeleyici arkasındaysa, daha uzun URI’lere izin vermek için ayarlarını güncelleyin.

Nginx için:

proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
large_client_header_buffers 4 16k;

HAProxy için:

option http-buffer-request
max-header-size 32768

Değişiklikleri yaptıktan sonra ilgili hizmeti yeniden başlatın:

sudo systemctl restart nginx  # For Nginx
sudo systemctl restart haproxy  # For HAProxy

5. mod_security Kurallarını Devre Dışı Bırakın veya Değiştirin

Eğer mod_security etkinse, uzun istek URI’lerini engelliyor olabilir. Sorunun kaynağını kontrol etmek için geçici olarak devre dışı bırakın:

sudo a2dismod security2  # Debian/Ubuntu
sudo systemctl restart apache2  # Restart Apache

Eğer mod_security’yi devre dışı bırakmak sorunu çözüyor ise, kalıcı olarak kapatmak yerine kurallarını özelleştirmeyi düşünün.

Sonuç

Apache’deki “Request-URI Too Long” hatası genellikle aşırı URL uzunluğundan kaynaklanır; bu, yanlış yapılandırılmış uygulamalar, aşırı uzun sorgu dizeleri veya proxy ayarlarındaki sınırlamalar nedeniyle olabilir. Neyse ki, bu sorun birkaç etkili strateji ile çözülebilir:

  • İlgili Apache ve sunucu tarafı sınırlarını artırmak (örneğin, LimitRequestLine, LimitRequestFieldSize)

  • Uygulamalarınızdaki URL yapılarını ve GET istek yüklerini optimize etmek

  • NGINX veya Apache ters proxy yapılandırmalarını ayarlamak

  • Reddetmeye neden olabilecek WAF (Web Uygulama Güvenlik Duvarı) veya ModSecurity kurallarını gözden geçirmek

AvaHost’ta, barındırma ortamımız esnek ve geliştirici dostu olacak şekilde tasarlanmıştır. İster paylaşımlı bir barındırma planında olun, ister kendi VPS / özel sunucunuzu yönetin, bu tür sorunları çözmek için sunucu yapılandırmaları üzerinde tam kontrolünüz vardır.