2015-09-14 40 views
0

每當我將我的Hapi.js Web應用程序部署到Azure時,它會使用套接字協議啓動服務器(請參見下面的輸出)。Azure網站使用套接字協議啓動我的Hapi Node.js站點

socket:\\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb 
    GET   /        
    GET    /{param*}      
    GET    /api/employees     
    POST    /api/employees     
    GET    /api/employees/{id}    
    PUT    /api/employees/{id}    
    DELETE   /api/employees/{id}    
    POST    /api/worklog     
    GET    /login       
    POST    /login       
Hapi server started @ socket:\\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb 
150914/214730.270, [response], socket:\\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb: [1;32mget[0m/{} [32m200[0m (316ms) 

但是,每當我運行這個地方,它開始使用http ...我還沒有碰到使用明示或回送,只哈皮這個問題。是否有某種我缺少的配置?這是server.connection功能:

var server = new Hapi.Server(); 
var host = process.env.host || '0.0.0.0'; 
var port = process.env.port || 3000; 

server.connection({host: host, port: port}); 

的原因,這是一個大問題,是因爲我無法通過socket://*<mydoamin>*,以谷歌作爲回調的URI的OAuth。

+0

您使用的是什麼Azure服務?網絡應用?還有別的嗎? –

+1

是的,使用與Kudu部署腳本一起部署的Azure Web Apps,一個iisnode.yml和一個生成的web.config –

回答

0

您不需要通過socket://<domain>谷歌,你會傳遞正常https://yourDomain.com甚至https://yourSiteName.azurewebsites.net谷歌OAuth回調,它應該像你所期望的那樣工作。

節點應用程序正在監聽管道而不是正常的tcp套接字的事實只是iisnode的實現細節。基本上問題是節點有它自己的網絡服務器,所以你不能使用它與IIS,Apache,Nginx等其他Web服務器。iisnode彌合了IIS和節點之間的差距,因爲它允許IIS監聽HTTP端口機器80並且IIS在該端口上獲取請求時,它只是將其轉發到正在偵聽命名管道的節點進程。這允許您像在Windows Server計算機上一樣在IIS中管理您的站點,而實際上在節點中編寫應用程序。

您可以將其視爲在該框上運行的2個Web服務器,其中一個(IIS)充當其他所有工作實際發生的其他節點的代理。 iisnode開發人員選擇使用命名管道而不是普通的tcp套接字的事實很奇怪(雖然有點可以理解,因爲你不能像管道一樣容易地保留一個端口),但事實就是這樣。

+0

所以事實證明,我忽略了bell.js/hapi auth中的「location」屬性,它傳遞了我的服務器uri設置在hapi上......並且由於Azure/IIS在命名管道中運行,這就是獲取'socket:\\。\ pipe \ *'協議的位置。 –