Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak protocol.http.ProxyTunnelCreationFailed
hata koduyla birlikte 503 Service Unavailable
HTTP durum kodunu 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" } } }
Proxy ve tünellemeyi yönlendirin
Apigee Edge,
Yönlendirme proxy'sini yapılandırma bölümünde açıklandığı gibi, API proxy'lerinizin bir proxy sunucu üzerinden arka uç sunucunuzla iletişim kurmasına olanak tanır. Proxy sunucu, kullanılan proxy türüne (HTTPClient.proxy.type
özelliği tarafından gösterilir) bağlı olarak arka uç sunucusuna 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 denir.
Apigee Edge, varsayılan olarak tüm trafik için tünel kullanımını kullanır. Tünel kullanımını devre dışı bırakmak için HTTPClient.use.tunneling
özelliğinin false
olarak ayarlanması gerekir.
Hata Kodu: Protocol.http.ProxyTunnelCreationFailed
Proxy sunucu; güvenlik duvarı, EKL (Erişim Kontrol Listesi) kısıtlamaları, DNS sorunları, arka uç sunucusunun kullanılamaması, zaman aşımları gibi sorunlar nedeniyle Apigee Edge ile arka uç sunucu arasında tünel oluşturamıyorsa Apigee Edge hata kodunu protocol.http.ProxyTunnelCreationFailed
döndürür.
Apigee Edge yanıtının faultstring
bölümündeki durum kodu, genellikle bu hataya yol açan olası bir üst düzey nedeni belirtir.
Hata dizesi ş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
öğesinde belirtilen durum koduna bağlı olarak olası nedenler açıklanmaktadır:
Hata dizesi | Açıklama |
---|---|
Proxy, 403 yanıt durumuna sahip tünel oluşturmayı reddetti |
Bu durum, arka uç sunucuda yapılandırılmış olan ve tünel oluşturulmasını önleyen güvenlik duvarı veya EKL kısıtlamaları nedeniyle meydana gelebilir. |
Proxy, 503 yanıt durumuna sahip tünel oluşturmayı reddetti |
Bu durum DNS sorunları, güvenlik duvarı kısıtlamaları ve tünel oluşturulmasını önleyen arka uç sunucusunun kullanılamamasından kaynaklanabilir |
Proxy, yanıt durumu 504 olan tünel oluşturmayı reddetti |
Tünel oluşturma sırasında zaman aşımları varsa bu durum meydana gelebilir. |
faultstring
içinde gözlemlenen durum koduna bağlı olarak, sorunu gidermek için uygun teknikleri kullanmanız gerekir. Bu başucu kitabında, protocol.http.ProxyTunnelCreationFailed
hata kodu için faultstring
içinde 403
durum kodunu gözlemlerseniz sorunu nasıl gidereceğiniz açıklanmaktadır.
Olası nedenler
Bu hata (durum kodu 403
), arka uç sunucusunda, tünelin Apigee Edge ile proxy sunucu tarafından arka uç sunucusu arasında oluşturulmasına engel olan yapılandırılmış herhangi bir güvenlik duvarı veya EKL (Erişim Kontrol Listesi) kısıtlamaları varsa ortaya çıkar.
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
Proxy, yanıt durumu 403 olan tünel oluşturmayı reddetti | Proxy sunucu, Host üst bilgisinde Arka uç sunucusu ana makine adı yerine Proxy sunucu ana makine adını aldığı için tüneli oluşturmayı reddediyor. |
Yalnızca Edge Private Cloud kullanıcıları |
Yaygın teşhis adımları
Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:
İzleme aracı
Hatayı İzle aracını kullanarak teşhis etmek için:
- İzleme oturumunu etkinleştirin ve aşağıdakilerden birini yapın:
- Hatanın oluşmasını bekleyin veya
- Sorunu yeniden oluşturabiliyorsanız
503 Service Unavailable
Proxy refused to create tunnel with response status 403
sorunu için API çağrısını yapın.
Tüm FlowInfo'ları göster seçeneğinin etkin olduğundan emin olun:
- Başarısız isteklerden birini seçip izi inceleyin.
- İzin farklı aşamaları arasında gezinin ve hatanın nerede gerçekleştiğini bulun.
Hatayı genellikle aşağıda gösterildiği gibi 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
- İzdeki AX (Analytics Data Recorded) Aşamalı Sunumu'na gidin ve bunu tıklayın.
Aşama Ayrıntıları Yanıt Başlıkları bölümüne ilerleyin ve X-Apigee-fault-code ile X-Apigee-fault-source değerlerini aşağıda gösterildiği gibi belirleyin:
X-Apigee-fault-code ve X-Apigee-fault-source değerlerini sırasıyla
protocol.http.ProxyTunnelCreationFailed
vetarget
olarak görürsünüz. Bu, bu hatanın, beklenen ana makine üstbilgisi alınmadığı için proxy tüneli oluşturma işleminin başarısız olmasından kaynaklandığını gösterir.Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
NGINX
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Private Cloud kullanıcısıysanız HTTP
503 Service Unavailable
hatalarıyla ilgili önemli 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_log
Yer: ORG, ORG ve PORT# gerçek değerlerle değiştirilir.
- Belirli bir süre boyunca
protocol.http.ProxyTunnelCreationFailed
hata koduna sahip503
hatası (sorun geçmişte olduysa) veya503
nedeniyle hâlâ başarısız olan bir istek olup olmadığını görmek için arama yapın. 503
X-Apigee-fault-code 'da X-Apigee-fault-code değeriyle eşleşen bir hata bulursanız X-Apigee-fault-code 'un değerini belirleyin.NGINX erişim günlüğünden örnek 503 hatası:
NGINX erişim günlüğünden yukarıdaki örnek giriş, X- Apigee-fault-code ve X-Apigee-fault-source için aşağıdaki değerlere sahiptir:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
Neden: Proxy, yanıt durumu 403 olan tünel oluşturmayı reddetti
Teşhis
- Yaygın teşhis adımları bölümünde açıklandığı şekilde, İzleme Aracı'nı veya NGINX erişim günlüklerini kullanarak
503 Service Unavailable
için Hata Kodu ve Hata Kaynağı'nı belirleyin. - Hata Mesajı'nı inceleyin ve tünel oluşturulamadığı için
faultstring
içinde belirtilen durum kodunu belirleyin. - Bu senaryoda durum kodu, Yasak anlamına gelen
403
şeklindedir. - Bu, tünel oluşturmak için yeterli hakların veya ayrıcalıkların olmadığı anlamına gelir. Genellikle tünelin oluşturulmasını engelleyen bir güvenlik duvarı veya EKL (Erişim Kontrol Listesi) kısıtlamaları varsa bu durumla karşılaşılabilir.
- Arka uç sunucunuzda yapılandırılmış, tünel oluşturulmasını engelleyebilecek tüm güvenlik duvarı ve/veya EKL kısıtlamalarını inceleyin.
- Güvenlik duvarının ve/veya EKL 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ını ele alalım:
Senaryo: Arka uç sunucusundaki güvenlik duvarı kısıtlaması, ana makine başlığının her zaman arka uç sunucusu ana makine adını içermesini bekler
Apigee Edge'in aktardığı ana makine başlığını belirlemek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
Trace
Trace'i kullanarak Ana Makine Başlığını belirlemek için:
- Yaygın teşhis adımları bölümünde açıklandığı şekilde, iz kullanarak
faultstring
cihazınınProxy refused to create tunnel with response status 403
içerdiğini doğrulayın. - Hedef İstek Akışı Başladı aşamasına gidin ve İstek Başlıkları'nı inceleyin.
- Request Headers (İstek Başlıkları) bölümündeki Ana makine üst bilgisi'nde belirtilen ana makine adının değerini doğrulayın.
- Host (Ana Makine) üstbilgisinde proxy hosts name (proxy ana makine adı) değeri varsa bu hatanın nedeni budur.
- Bunun nedeni, güvenlik duvarının arka uç sunucuda, yalnızca Ana Makine Başlığı'nda arka uç sunucunun adını içermesi durumunda istekleri kabul edecek şekilde yapılandırılmış olmasıdır.
- Dolayısıyla proxy sunucu, arka uç sunucusuyla tünel oluşturmaya çalıştığında şu hatayı vererek başarısız olur:
Proxy refused to create tunnel with response status 403
.Ana makine üst bilgisinin proxy ana makine adına sahip olduğunu gösteren örnek iz
Yukarıda gösterilen örnek izde, Ana Makine Üst Bilgisi'nin proxy ana makinesinin adını içerdiğini görebilirsiniz.
www.proxyserver.com.
Arka uç sunucusunda, Ana Makine Üst Bilgisi'nde yalnızca arka uç sunucusu ana makine adının yer almasını bekleyen bir güvenlik duvarı kısıtlaması olduğundanProxy refused to create tunnel with response status 403
hatası alırsınız.
tcpdump
tcpdump kullanarak Ana Bilgisayar Üstbilgisini belirlemek için
Aşağıdaki komutla Apigee Edge'in Mesaj İşleyici bileşeninden gelen istekler için proxy sunucuda bir
tcpdump
yakalayın:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
tcpdump
komutunu kullanma hakkında daha fazla bilgi için tcpdump'a bakın.tcpdump
verilerini Wireshark aracı veya benzer bir araç kullanarak analiz edin.Wireshark kullanılarak hazırlanan örnek bir tcpdump analizini burada bulabilirsiniz:
- 13, 14 ve 15 paket numaraları, Mesaj İşleyicinin üç yönlü TCP el sıkışma işlemi aracılığıyla proxy sunucuyla bağlantı kurduğunu gösterir.
- 16 paketinde, Mesaj İşleyici
httpbin.org
proxy ana makinesine (yukarıdaki örnekte gösterilmiştir) bağlanmıştır. 16 paketini seçip paketin içeriğini, özellikle de Mesaj İşleyici tarafından proxy sunucuya iletilen Ana Makine Başlığı'nı ayrıntılı olarak inceleyin.
- Yukarıdaki örnekte, proxy sunucunun ana makine adı olan Ana Makine Başlığı
httpin.org
gösterilmektedir. Bu nedenle, proxy sunucu yukarıdaki Ana Makine Başlığı'nıhttpin.org
ileterek arka uç sunucuyla tünel oluşturmaya çalıştığında,Proxy refused to create tunnel with response status 403
hatasıyla başarısız olur.
- Yaygın teşhis adımları bölümünde açıklandığı şekilde, iz kullanarak
Çözünürlük
Senaryo: Proxy sunucudaki güvenlik duvarı kısıtlaması, ana makine üst bilgisinin her zaman arka uç sunucu ana makine adını içermesini bekler
Bu hatanın, arka uç sunucusundaki güvenlik duvarının Ana Makine Üst Bilgisi'nin her zaman backend sunucu ana makine adını içermesini sağlayacak şekilde yapılandırılmasından kaynaklandığını düşünüyorsanız, Mesaj İşleyici, backend ana makine adını gönderir ve 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>
Proxy yönlendirme ile ilgili diğer özelliklerin Mesaj İşleyici'de aşağıdaki şekilde yapılandırıldığından emin olun:
- İleti İşleyicilerinin her birindeki
/opt/apigee/customer/application/message-processor.properties
dosyasını inceleyin. Aşağıdaki özelliklerin kullanım alanınıza veya gereksinimlerinize göre ayarlandığından emin olun:
Mülkler 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
- İleti İşleyicilerinin her birindeki
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki teşhis bilgilerini toplayıp 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 istekler için gözlemlenen tam hata mesajı
- 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_log
Yer: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
Mesaj İşleyici sistem günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log