Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak 503 Service Unavailable HTTP durum kodunu protocol.http.ProxyTunnelCreationFailed hata koduyla birlikte alır.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 503 Service Unavailable
Ayrıca aşağıdaki hata mesajını da görebilirsiniz:
{
"fault":{
"faultstring":"Proxy refused to create tunnel with response status 403",
"detail":{
"errorcode":"protocol.http.ProxyTunnelCreationFailed"
}
}
}Yönlendirme proxy'si ve tünel oluşturma
Apigee Edge,
İletme proxy'sini yapılandırma bölümünde açıklandığı gibi API proxy'lerinizin bir proxy sunucusu aracılığıyla arka uç sunucunuzla iletişim kurmasına olanak tanır. Proxy sunucu, kullanılan proxy türüne ( HTTPClient.proxy.type özelliğiyle belirtilir) bağlı olarak arka uç sunucuyla güvenli (HTTPS) veya güvenli olmayan (HTTP) bir bağlantı açar ve verileri her iki yönde de aktarır. Bu işleme tünel oluşturma adı verilir.
Apigee Edge, varsayılan olarak tüm trafik için tünel oluşturmayı kullanır. Tünel oluşturmayı devre dışı bırakmak için HTTPClient.use.tunneling özelliği false olarak ayarlanmalıdır.
Hata kodu: protocol.http.ProxyTunnelCreationFailed
Apigee Edge, güvenlik duvarı, ACL (Erişim Kontrol Listesi) kısıtlamaları, DNS sorunları, arka uç sunucusunun kullanılamaması, zaman aşımları vb. gibi sorunlar nedeniyle proxy sunucusu Apigee Edge ile arka uç sunucusu arasında tünel oluşturamıyorsa protocol.http.ProxyTunnelCreationFailed hata kodunu döndürür.
Apigee Edge'den gelen yanıttaki faultstring durum kodu genellikle bu hataya yol açan olası bir üst düzey nedeni gösterir.
Faultstring şablonu:
Proxy refused to create tunnel with response status STATUS_CODE
Hata dizesinde gözlemlenen durum kodlarından bazılarının olası nedenleri:
Aşağıdaki tabloda, faultstring içinde belirtilen durum koduna bağlı olarak olası nedenler açıklanmaktadır:
| Hata dizesi | Açıklama |
|---|---|
Proxy, 403 yanıt durumuyla tünel oluşturmayı reddetti |
Bu durum, arka uç sunucusunda tünel oluşturulmasını engelleyen güvenlik duvarı veya ACL kısıtlamaları nedeniyle oluşabilir. |
Proxy, 503 yanıt durumuyla tünel oluşturmayı reddetti |
Bu durum, DNS sorunları, güvenlik duvarı kısıtlamaları, arka uç sunucusunun kullanılamaması nedeniyle tünel oluşturulmasını engellemesi gibi nedenlerden kaynaklanabilir. |
| Proxy, 504 yanıt durumuyla tünel oluşturmayı reddetti |
Bu durum, tünel oluşturma sırasında zaman aşımı olursa meydana gelebilir. |
faultstring içinde gözlemlenen durum koduna bağlı olarak, sorunu gidermek için uygun teknikleri kullanmanız gerekir. Bu oyun kitabı, hata kodu protocol.http.ProxyTunnelCreationFailed için faultstring bölümünde durum kodu 403 ile karşılaşırsanız sorunu nasıl gidereceğinizi açıklar.
Olası nedenler
Bu hata (durum kodu 403), arka uç sunucusunda tünelin proxy sunucusu tarafından Apigee Edge ile arka uç sunucusu arasında oluşturulmasını engelleyen güvenlik duvarı veya ACL (Erişim Kontrol Listesi) kısıtlamaları yapılandırılmışsa oluşur.
| Neden | Açıklama | Aşağıdaki ürünler için geçerli sorun giderme talimatları |
|---|---|---|
| Proxy, 403 yanıt durumuyla tünel oluşturmayı reddetti | Proxy sunucusu, Host üstbilgisinde arka uç sunucusu ana makine adı yerine proxy sunucusu ana makine adını aldığından tünel oluşturmayı reddediyor. |
Yalnızca Edge Private Cloud kullanıcıları |
Sık karşılaşılan teşhis adımları
Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:
İzleme aracı
İzleme aracını kullanarak hatayı teşhis etmek için:
- İzleme oturumunu etkinleştirin ve:
- Hatayı bekleyin veya
- Sorunu yeniden oluşturabiliyorsanız sorunu yeniden oluşturmak için API çağrısını
503 Service UnavailableProxy refused to create tunnel with response status 403ile yapın.
Tüm FlowInfo'ları göster'in etkinleştirildiğinden emin olun:
- Başarısız olan isteklerden birini seçip izlemeyi inceleyin.
- İzlemenin farklı aşamalarında gezinin ve hatanın nerede oluştuğunu bulun.
Hatayı genellikle aşağıdaki örnekte gösterildiği gibi Target Request Flow Started (Hedef İstek Akışı Başlatıldı) aşamasından sonra görürsünüz:
Aşağıdaki bilgileri göz önünde bulundurun:
hata:
Proxy refused to create tunnel with response status 403- İzleme işleminde AX (Analytics Verileri Kaydedildi) aşamasına gidin ve bu aşamayı tıklayın.
Phase Details Response Headers (Aşama Ayrıntıları Yanıt Üstbilgileri) bölümüne gidin ve aşağıdaki gibi X-Apigee-fault-code ile X-Apigee-fault-source değerlerini belirleyin:
X-Apigee-fault-code ve X-Apigee-fault-source değerlerini sırasıyla
protocol.http.ProxyTunnelCreationFailedvetargetolarak görürsünüz. Bu, beklenen ana makine üstbilgisi alınmadığı için proxy tüneli oluşturma işleminin başarısız olmasından kaynaklanan bir hata olduğunu gösterir.Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailedX-Apigee-fault-source target
NGINX
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Özel bulut kullanıcısıysanız HTTP
503 Service Unavailablehatalarıyla ilgili temel bilgileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_logNerede: ORG, ORG ve PORT# gerçek değerlerle değiştirilir.
- Belirli bir süre boyunca (sorun geçmişte yaşandıysa)
503hata koduylaprotocol.http.ProxyTunnelCreationFailedhata olup olmadığını veya503ile hâlâ başarısız olan istekler olup olmadığını arayın. X-Apigee-fault-code değerinin
protocol.http.ProxyTunnelCreationFaileddeğeriyle eşleştiği503hatalarla karşılaşırsanız, X-Apigee-fault-source değerini belirleyin.NGINX erişim günlüğünden örnek 503 hatası:
NGINX erişim günlüğündeki yukarıdaki örnek girişte, X- Apigee-fault-code ve X-Apigee-fault-source: için aşağıdaki değerler yer almaktadır:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailedX-Apigee-fault-source target
Nedeni: Proxy, 403 yanıt durumuyla tünel oluşturmayı reddetti
Teşhis
503 Service Unavailableiçin Hata Kodunu ve Hata Kaynağını, Genel teşhis adımları bölümünde açıklandığı gibi İzleme Aracı veya NGINX erişim günlüklerini kullanarak belirleyin.- Hata Mesajı'nı inceleyin ve tünel oluşturma işlemindeki hataya neden olan
faultstring'de belirtilen durum kodunu belirleyin. - Bu senaryoda durum kodu
403'dır. Bu, Yasak anlamına gelir. - Bu, tüneli oluşturmak için yeterli hak veya ayrıcalık olmadığı anlamına gelir. Bu durum genellikle tünelin oluşturulmasını engelleyen güvenlik duvarı veya EKL (Erişim Kontrol Listesi) kısıtlamaları olduğunda ortaya çıkar.
- Arka uç sunucunuzda yapılandırılan ve tünel oluşturulmasını engelleyebilecek güvenlik duvarı ve/veya ACL kısıtlamalarını inceleyin.
- Güvenlik duvarı ve/veya ACL kısıtlamalarının türüne bağlı olarak sorunu uygun şekilde düzeltmeniz gerekir.
Bu sorunu nasıl gidereceğinizi ve çözeceğinizi açıklamak için örnek bir güvenlik duvarı kısıtlaması ele alalım:
Senaryo: Arka uç sunucusundaki güvenlik duvarı kısıtlaması, ana makine üstbilgisinin her zaman arka uç sunucusu ana makine adını içermesini bekliyor
Apigee Edge tarafından iletilen Host üstbilgisini belirlemek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
Trace
Trace'i kullanarak ana makine başlığını belirlemek için:
faultstringiçindeProxy refused to create tunnel with response status 403bulunduğunu, Yaygın teşhis adımları bölümünde açıklandığı şekilde izleme kullanarak doğrulayın.- Target Request Flow Started (Hedef istek akışı başlatıldı) aşamasına gidin ve Request Headers'ı (İstek başlıkları) inceleyin.
- İstek Başlıkları bölümündeki Ana makine başlığında belirtilen ana makine adının değerini doğrulayın.
- Host başlığı proxy ana makine adını içeriyorsa bu hatanın nedeni budur.
- Bunun nedeni, güvenlik duvarının arka uç sunucusunda yalnızca Host üstbilgisi arka uç sunucusunun adını içeriyorsa istekleri kabul edecek şekilde yapılandırılmış olmasıdır.
- Bu nedenle, proxy sunucu arka uç sunucuyla tünel oluşturmaya çalıştığında
Proxy refused to create tunnel with response status 403.Ana makine üstbilgisinin proxy ana makine adını içerdiğini gösteren örnek izleme
Yukarıda gösterilen örnek izlemede, Host Header'ın proxy ana makinesinin adını içerdiği gösteriliyor.
www.proxyserver.com.Arka uç sunucusunda yalnızca arka uç sunucusu ana makine adının Host Header'da bulunmasını bekleyen bir güvenlik duvarı kısıtlaması yapılandırıldığındanProxy refused to create tunnel with response status 403hatasını alıyorsunuz.
tcpdump
tcpdump kullanarak ana makine üstbilgisini belirlemek için:
Aşağıdaki komutla Apigee Edge'in Mesaj İşleyici bileşeninden gelen istekler için proxy sunucusunda
tcpdumpyakalayın:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
tcpdumpkomutunu kullanma hakkında daha fazla bilgi için tcpdump başlıklı makaleyi inceleyin.tcpdumpverilerini Wireshark aracı veya benzer bir araç kullanarak analiz edin.Wireshark kullanılarak tcpdump ile ilgili örnek bir analiz aşağıda verilmiştir:
- 13, 14 ve 15 numaralı paketler, Mesaj İşleyici'nin üç yönlü TCP el sıkışma süreciyle proxy sunucusuna bağlantı kurduğunu gösteriyor.
- 16 numaralı pakette, Mesaj İşleyici, proxy ana makinesine
httpbin.orgbağlanmıştır (yukarıdaki örnekte gösterilmiştir). Paket 16'yı seçin ve paketin içeriğini ayrıntılı olarak inceleyin. Özellikle de Mesaj İşleyici tarafından proxy sunucusuna iletilen Host Header'ı (Ana Makine Başlığı) inceleyin.
- Yukarıdaki örnekte, proxy sunucusunun ana makine adı olan Host Header
httpin.orggösterilmektedir. Bu nedenle, proxy sunucusu yukarıdaki Host Header'ıhttpin.orgileterek arka uç sunucusuyla tünel oluşturmaya çalıştığındaProxy refused to create tunnel with response status 403hatasıyla başarısız olur.
Çözünürlük
Senaryo: Proxy sunucusundaki güvenlik duvarı kısıtlaması, ana makine üstbilgisinin her zaman arka uç sunucunun ana makine adını içermesini bekliyor
Bu hatanın, arka uç sunucusundaki güvenlik duvarının Host Header'ın her zaman backend sunucusu ana makine adını içerecek şekilde yapılandırılmasından kaynaklandığını belirlediyseniz ve Mesaj İşleyici proxy sunucusu ana makine adını gönderiyorsa sorunu çözmek için aşağıdaki adımları uygulayın:
Aşağıdaki örnekte gösterildiği gibi, TargetEndpoint'te
use.proxy.host.header.with.target.uriözelliğini true olarak ayarlayın:Örnek TargetEndpoint yapılandırması:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>https://mocktarget.apigee.net/json</URL> <Properties> <Property name="use.proxy.host.header.with.target.uri">true</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>Yönlendirme proxy'si ile ilgili diğer özelliklerin, Mesaj İşleyici'de aşağıdaki gibi yapılandırıldığından emin olun:
- Her bir Mesaj İşleyici'deki
/opt/apigee/customer/application/message-processor.propertiesdosyasını inceleyin. Aşağıdaki özelliklerin kullanım alanınıza veya koşullarınıza göre ayarlandığından emin olun:
Özellikler için örnek değerler:
conf_http_HTTPClient.use.proxy=true conf/http.properties+HTTPClient.proxy.type=HTTP conf/http.properties+HTTPClient.proxy.host=PROXY_SERVER_HOST_NAME conf/http.properties+HTTPClient.proxy.port=PORT_# conf/http.properties+HTTPClient.proxy.user=USERNAME conf/http.properties+HTTPClient.proxy.password=PASSWORD
- Her bir Mesaj İşleyici'deki
Teşhis bilgilerini toplamalıdır
Yukarıdaki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayın ve Apigee Edge Destek Ekibi ile iletişime geçin:
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız olan istekler için gözlemlenen hata mesajının tamamı
- Ortam adı
- API proxy paketi
- API istekleri için izleme dosyası
NGINX erişim günlükleri
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logNerede: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
Mesaj işleyici sistem günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log