[英]Azure Web Site starting my Hapi Node.js site with socket protocol
每当我将Hapi.js Web应用程序部署到Azure时,它都会使用套接字协议启动服务器(请参见下面的输出)。
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...。我还没有遇到使用Express或Loopback的问题,仅使用Hapi。 我缺少某种配置吗? 这是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>*
作为OAuth的回调URI传递给google。
您不需要将socket://<domain>
传递给Google,只需将普通的https://yourDomain.com
或https://yourSiteName.azurewebsites.net
传递给Google进行OAuth回调,它就应该像您期望的那样工作。
节点应用程序正在监听管道而不是普通的tcp套接字,这只是iisnode的实现细节。 基本上,问题在于节点拥有自己的网络服务器,因此您不能将其与IIS,Apache,nginx等其他网络服务器一起使用。iisnode弥合了IIS与节点之间的鸿沟,因为它允许IIS侦听IIS上的HTTP端口。机器80
,当IIS在该端口上收到请求时,它将其转发到在命名管道上侦听的节点进程。 这样一来,您就可以像通常在Windows Server计算机上一样在IIS中管理IIS中的站点,同时在节点中实际编写应用程序。
您可以将其想象为在盒子上运行的2台Web服务器,其中一个(IIS)充当了实际上正在进行所有工作的另一个(节点)的代理。 iisnode开发人员选择使用命名管道而不是普通的tcp套接字的事实很奇怪(尽管这是可以理解的,因为您不能像管道一样轻易地保留端口本身),但是事实就是这样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.