Apinizer Olası Sorunları ve Çözümleri
Coğrafi Bilgi Sistemleri Servislerinde GetCapabilities Routing Sorunu
Problem
Coğrafi Bilgi Sistemleri servislerinde GetCapabilities ile dönmekte olan WSDL içerisindeki adreslerin Apinizer'a taşınması gerekmektedir.
Çözüm
- bölgeye eklenecek bir Business Rule veya Script poliçesi ile url'de query param olarak 'request' anahtarında 'GetCapabilities' değeri geliyorsa string replace ile buradaki adres Apinizer'da ilgili proxy'e yönlenecek şekilde değiştirilmelidir.
Client IP Adresinin 10.244.x.x Şeklinde Görülmesi
Problem
Client IP adresi Kubernetes ortamında 10.244.x.x şeklinde görülmektedir.
Sebep/Neden
Kubernetes NodePort yapısında eğer client'dan X-Forwarded-For değer gelmiyorsa default olarak arka taraftaki uygulamaya pod'un IP adresini yönlendiriyor. Çözüm olarak externalTrafficPolicy değer Local yaparak çözebiliyoruz ancak bu defa NodePort gelen isteği Cluster'daki diğer sunuculara yönlendirmediğinden erişim sıkıntısı oluşuyor. İlgili Node'u bilip ona gitmek gerekiyor.
Çözüm
Apinizer Worker'ları Nginx veya F5 gibi bir yapının arkasına konacağı için, ilgili loadbalancer'ın konfigürasyon dosyasına aşağıdaki gibi header'a xff bilgisinin eklenmesi gerekiyor.
Nginx için bu ayar aşağıdaki gibi yapılabilir:
location /apigateway/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://api.inst.com/apigateway/;
} # end location
API Trafik Loglarında Alt Çizgi İçeren Header'ların Görünmemesi
Problem
API Trafik Loglarında alt çizgi içeren Header'ların görünmemesi/aktarılmaması.
Sebep/Neden
Bu sorun Apinizer'la alakalı olmamakla birlikte, Apinizer'ın önünde kullanılma ihtimali olan Nginx'in varsayılan ayarları ile ilgilidir.
Nginx, web sunucusu ve ters proxy sunucusu olarak yaygın bir şekilde kullanılmaktadır. Ancak, Nginx'in varsayılan konfigürasyonunda, isimlerinde alt çizgi (_) karakteri bulunan HTTP header'ları işlenmez ve geçirilmez. Bu, alt çizgilerin HTTP RFC'sinde standart olmamasından kaynaklanmaktadır.
Çözüm
Bu sorunu çözmek için Nginx konfigürasyon dosyasında underscores_in_headers direktifini on olarak ayarlamalısınız. Bu, Nginx'in alt çizgi içeren header'ları doğru bir şekilde işlemesini sağlar.
vi /etc/nginx/nginx.conf
http {
underscores_in_headers on;
}
Ingress Nginx için:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configuration
namespace: ingress-nginx
labels:
app: ingress-nginx
data:
enable-underscores-in-headers: "true"
Türkçe Karakterler Bozularak İletiliyor
Problem
Türkçe karakterler bozularak iletiliyor.
Sebep/Neden
Client tarafından veri gönderimi sırasında Content-Type header'ına karakter set bilgisi set edilmelidir.
Çözüm
Client örnek olarak gönderdiği Content-Type: application/xml ikilisinde value kısmını application/xml; charset=UTF-8 olacak şekilde ayarlayarak göndermelidir.
PKIX Path Building Failed Hatası
Problem
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Çözüm
İlgili adresin public sertifikası Sertifika Yönetimi sayfasından Apinizer'a eklenmelidir.
Adrese erişebilen bir tarayıcı yok ise openssl uygulaması yüklü ve adrese erişebilen bir sunucuda aşağıdaki komut ile indirilebilir:
openssl s_client -showcerts -connect server.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > serverscertfile.pem
Apinizer 2024.05.4+ Versiyonunda Login Sorunu
Problem
Apinizer'ı 2024.05.4 veya sonrası bir versiyonuna güncelledim ancak arayüze login olamıyorum.
Sebep/Neden
2024.05.4 versiyonunda yapılan güvenlik yaması ile Apinizer Yönetim Konsolunda tarayıcılarının bulunduğu istemci IP'lerinin değer kontrolü zorunlu hale getirilmiştir.
Bu sebeple arayüze "Kubernetes Ingress Controller" kullanarak bağlanan kurumların X-Forwarded-For header'ı ile client ip bilgisini gönderecek ayarları yapması gerekmektedir.