部署Node.js应用程序以供生产使用

4
大多数教程都是通过设置服务器监听端口来建立Node.js Web应用程序,并通过指定该端口在浏览器中访问。然而,我如何将Node.js应用程序部署到可以完全访问域名例如foobar.com的位置呢?
5个回答

1
使用pm2在服务器上运行你的node应用程序。 然后使用Nginx代理到你的node服务器。我知道这听起来很奇怪,但这就是做法。最终,如果你需要设置负载均衡器,也可以在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;

}


1

另一种选择是重定向:

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

谢谢。


1

您需要将您的域名apex (naked domain)和通常的www绑定到您的Web服务器的IP或其CNAME上。

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


1

你的问题有点模糊。如果你的DNS已经配置好了,你可以绑定到80端口并完成它。然而,如果你已经在80端口上运行了apache或其他httpd来为其他主机提供服务,那显然行不通。

如果你喜欢将node进程作为非root用户运行(你应该这样做),那么更有可能你正在寻找一个反向代理。我的主要httpd是nginx,相关选项是proxy_pass。如果你使用apache,你可能需要mod_proxy


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接