2016-11-22 42 views
2

我有兩個非常簡單的服務設置(在Python中)在谷歌應用程序引擎。我有一個網站已經上漲了一段時間,作爲我的example項目的defualt服務,並且我剛部署了另一項服務,我們稱之爲foo。我有DNS轉發工作的默認服務,所以我可以去example.com(我在這個假設的情況下擁有),看到我的默認服務。我也可以去foo.example.appspot.com並查看我的foo服務,該服務在url上運行。我可以在Google應用引擎服務中指向一個域名嗎?

我還註冊了另一個域名,我們稱之爲foo.com。我想要的是foo.com使用我的foo.example.appspot.com服務。爲了使事情變得更加棘手,foo.com有一堆它自己的子域,所以我需要x.foo.com去我的foo服務以及(即使x.y.foo.com將是理想的,但如果這很難,我可以很容易地解決這個問題通過替換另一個字符,所以它將是x-y.foo.com或沿着這些線)。

我對web開發人員很新穎(對於這個簡單的項目來說,這真的是一個慷慨的描述),但是Iv'e花了一段時間閱讀和谷歌搜索,並沒有找到解決方案,所以任何建議都會很有幫助。我最後的辦法是將這兩項服務取消服務,然後將其全部捆綁到一個大的main.py中,根據域名的不同路由,然後將這兩個域指向default服務。這樣做的一大缺點是我已經擁有了一切與服務相關的東西(這似乎是一種更好的方法)。

我希望獲得很少的用戶,所以縮放並不是真正的問題(儘管瞭解它總是很有趣)。

編輯:

試圖創建dispatch.yaml文件來解決這個問題如下:

dispatch: 

    - url: "foo.com" 
    module: foo 

    - url: "*.foo.com" 
    module: foo 

但是當我運行appcfg.py -A <project_id_here> update_dispatch .它說

Error parsing yaml file: 
Unable to assign value 'foo.com' to attribute 'url': 
invalid url 'foo.com' 
    in "./dispatch.yaml", line 3, column 10 

回答

1

是的,它應該是可能。我實際上並沒有使用2個不同的頂級域名,但開發控制檯似乎已準備好接受第二個(我不能實際檢查,因爲我沒有第二個域名)。遵循Adding a custom domain for your application程序。

要特別注意Wildcard mappings部分 - 因爲您的foo.com域已經有子域正在使用中,所以您不能在這些子域上使用通配符,您必須指定所需的子域。

該過程僅將(子)域映射到整個應用程序,而不是單個服務/模塊。您還必須使用dispatch file將特定子域路由到相應的模塊/服務。你可以在這裏找到示例:https://stackoverflow.com/a/32103486/4495081https://stackoverflow.com/a/34111170/4495081(最後一個規則允許模塊在自定義域上,在appspot.com和本地開發服務器上)。

+0

感謝提示,調度文件看起來像我想要的,但我無法設置我想要的映射(請參閱我的編輯上面)。我也嘗試使用'「foo。編輯:對不起,堅持秒,我認爲第二個鏈接可能有我需要的 – stokastic

+0

nope,我不能找到一個例子,將第二個完整的域「foo.com」路由到服務 – stokastic

1

我明白了下面的答案中的鏈接。我的調度文件看起來像這樣:

dispatch: 

    - url: "foo.com/*" 
    module: foo 

    - url: "*.foo.com/*" 
    module: foo 
+0

感謝您確認我的理論,即多個頂級域可以映射到單個應用程序:) –

相關問題