3

我遇到的大多数教程都是通过将服务器设置为侦听端口来设置 Node.js Web 应用程序,并通过指定该端口在浏览器中访问它。但是,我将如何部署 Node.js。 js 应用程序是否可以通过 foobar.com 之类的域完全访问?

4

5 回答 5

1

您必须绑定您的域apex (naked domain),并且通常www与您的网络服务器的 ip 或其 CNAME 绑定。

由于您无法将 apex 域与 绑定CNAME,因此您必须指定服务器 IP 或 IP 或负载平衡器的 IP

于 2012-09-12T01:25:29.493 回答
1

您的问题有点模糊。如果您的 DNS 已经配置,您可以绑定到端口 80 并完成它。但是,如果您已经在端口 80 上运行了 apache 或其他一些 httpd 来为显然无法工作的其他主机提供服务。

如果您更喜欢以非 root 身份运行节点进程(并且您应该),那么您更有可能正在寻找反向代理。我的主要httpd是nginx,相关选项是proxy_pass。如果您使用的是 apache,您可能需要mod_proxy

于 2012-09-12T09:58:39.843 回答
1

我刚刚在注册商处创建了一条“A 记录”,指向我的 Web 服务器的 IP 地址。然后您可以在端口 80 上启动您的节点应用程序。

于 2012-10-07T02:00:34.373 回答
1

另一种方法是重定向:

http://www.foobar.comhttp://www.foobar.com:82

问候。

于 2012-11-30T22:55:28.667 回答
0

使用 pm2 在服务器上运行您的节点应用程序。

然后使用 Nginx 代理到您的节点服务器。我知道这听起来很奇怪,但它就是这样做的。最终,如果您需要设置负载均衡器,您也可以在 Nginx 中完成所有操作。

server {
listen 80;

server_name example.com;

location / {
    proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

}

这是我找到的关于为生产设置 node.js 的最佳教程。

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04

为了性能,您还设置了 nginx 来提供您的公共文件。

location /public {
    allow all;
    access_log off;
root /opt/www/site;

}

于 2016-08-31T13:03:29.473 回答