将域指向 Azure 上的节点快速服务器
Point domain to node express server on Azure
这一定是一个非常普遍的问题。我已经看到了各种答案,但似乎没有一个对我有用。
我在Windows Azure上的apache服务器上安装了节点。我的应用已构建并准备就绪(下面的代码片段(:
var express = require("express");
var app = express();
//example api call
app.get("/api/example", function(req, res){
//do some process
res.send(data);
});
app.listen(8080);
console.log("App listening on port 8080");
现在,在我自己的计算机上进行测试时,我可以转到 localhost:8080
,这很好用。但是现在我已经把它放在 azure 服务器上,我无法让外部域正确指向它。例如,我有域:
framework.example.com
我已将其添加到 Azure 中的主机文件中:
XXX.0.0.01 framework.example.com
最初,我还尝试编辑http-vhosts.conf
以将域指向正确的目录。这适用于加载前端,但应用程序无法与后端通信。API 调用返回了 400 个未找到错误。
我也尝试过一个快速的vhost方法,但认为我做错了,并不完全理解它。正确的方法是什么?!
我的应用结构是这样的:
- package.json
- server.js
- server
- files used by server.js
- public
- all frontend files
因此,为了启动服务器,我运行server.js
服务器,它在顶部运行代码。服务器.js使用以下快速配置指向公用文件夹。
app.use(express.static(__dirname + "/public"));
将其添加到 Azure 中的主机文件无济于事。需要将域的 DNS 配置为指向 Azure。我建议使用云服务实例的 DNS 名称。如果出于某种原因需要停止基础 VM IP 地址,则基础 VM 地址可能会更改,但云服务 DNS 名称配置为始终路由到基础 VM。这意味着您需要使用DNS设置别名记录。
在此处阅读更多相关信息:云服务自定义域名
接下来,您需要在端口 80 上托管节点应用程序,或者在其前面放置一个代理来为您处理。否则,您将无法键入framework.example.com:8080
这并不理想。在 Linux 上,您可能需要成为特权用户才能托管在端口 80 上,但您永远不希望您的节点应用程序具有 root 权限。您可以使用身份验证来解决此问题。
在此处查看如何将其与 node 一起使用的示例:将身份验证绑定与 Node 一起使用.js
话虽如此,您似乎对 Linux 服务器管理有些陌生。如果是这种情况,我强烈建议尝试使用 Azure 网站之类的东西,而不是 VM。您不再需要管理虚拟机操作系统。您只需告诉它托管您的应用程序,它会处理其余的工作。如果你使用的是github,这非常容易测试和迭代。它确实在 Windows 上托管,这可能会对某些应用程序造成问题,但我在那里托管我所有的节点站点(在 Mac 上开发(没有任何问题。
- 保持节点服务器运行”;观看“;让事情发生
- 如何将数据POST到节点服务器并从中获取responseText
- 跨节点服务器上的多个 API 请求维护数据
- Nodejs:在节点服务器启动时运行一个js文件
- 从节点服务器加载JavaScript
- 正在将表单数据发送到节点服务器
- 节点服务器响应错误: process.nextTick(function(){throw err;});.
- Angularjs:支持 html5mode 的节点服务器
- 连接到节点服务器自动查找掩码
- 如何将数据流流入节点服务器以填充人力图
- 如何从角度读取节点服务器的 json 响应
- 组合具有不同初始设置的两个节点服务器的功能
- 节点服务器问题
- 使用按钮单击将消息发送到节点服务器
- 节点服务器和 WS 服务器并行运行
- 如何运行节点服务器
- 更改路由并更新对节点服务器的 ajax 请求的视图
- socket.io 的节点服务器找不到本地主机
- Webpack 捆绑包验证,但节点服务器抛出语法错误
- jQuery AJAX到节点服务器抛出net::ERR_CONNECTION_REFUSED