2012-01-10 72 views
4

在Google App Engine上使用urlfetch時,是否可以指定代理服務器?在App Engine上製作代理服務器後的URLFetch

具體而言,每次我使用urlfetch進行呼叫時,我都希望GAE通過代理服務器。我想在生產上做到這一點,而不僅僅是開發。

我想使用代理服務器,因爲使用谷歌的出站IP地址有問題(速率限制,沒有靜態出站IP,有時列入黑名單等)。如果您可以自行編輯http消息,則設置代理通常很容易,但GAE的API似乎無法讓您這樣做。

+0

您認爲設置代理將如何幫助限速等? – 2012-01-10 08:01:09

+0

@DanielRoseman - 如果第三方以IP爲基礎限制請求,則使用代理將有所幫助。例如,Twitter將請求限制爲每小時150個IP地址。 – 2012-01-10 09:09:51

+0

@DanielRoseman BenP是對的。每個GAE IP地址上有數千個應用程序,這些限制會立即用完(感謝downvote btw)。 – speedplane 2012-01-10 13:37:17

回答

2

你總是可以滾你自己:

  1. 在固定目標時:只安裝一個固定的端口轉發的代理服務器上。然後從GAE發送請求到代理。如果您有多個目的地,則在不同的端口上設置轉發,每個目的地一個。

  2. 如果是動態目的地(通過固定端口轉發處理過多),GAE應用會添加包含最終目的地的自定義http標頭(X-Something),然後連接到自定義代理。自定義代理檢查此字段並將請求轉發到目標。

+0

我和@speedplane的情況相同,這很有幫助。從來沒有這樣做過,有沒有一個現有的代理服務器,你會推薦做這樣的事情(如說Squid)? – 2012-06-08 20:33:02

+1

嗨,彼得,你知道一個代理服務器系統,可以像GAE那樣很好地擴展嗎? – speedplane 2012-08-04 19:21:33

0

我們遇到了這個問題,並與Google雲支持聯繫。他們建議我們使用Google App Engine靈活的一些app.yaml設置,自定義網絡和一個ip轉發NAT網關實例。

這對我們不起作用,因爲App Engine標準中的許多核心功能都未在App Engine Flexible中實施。實質上,我們需要重寫我們的產品。

因此,爲了適用網址提取請求似乎有我們做了一個自定義代理靜態IP:https://github.com/csgactuarial/app-engine-proxy

出於冗餘的原因,我建議實施這是一個多區域,多區域,負載均衡系統。

相關問題