将域指向 Azure 上的节点快速服务器

Point domain to node express server on Azure

本文关键字:节点 服务器 Azure      更新时间:2023-09-26

这一定是一个非常普遍的问题。我已经看到了各种答案,但似乎没有一个对我有用。

我在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 上开发(没有任何问题。