我遇到的大多数教程都是通过将服务器设置为侦听端口来设置Node.js Web应用程序,并通过指定该端口在浏览器中访问它。但是,我将如何部署一个像foobar.com这样的域可以完全访问的Node.js应用程序?
答案 0 :(得分:1)
您必须将您的域apex (naked domain)
和www
绑定到您的网络服务器的IP或它的CNAME。
由于您无法将顶点域绑定到CNAME
,因此您必须指定服务器IP或IP或负载平衡器的IP
答案 1 :(得分:1)
您的问题有点模糊..如果您的DNS已配置,您可以绑定到端口80并完成它。但是,如果您已经在端口80上运行了apache或其他一些httpd来为其他主机提供服务,那么这些主机显然无法正常工作。
如果您希望以非root身份运行节点进程(并且您应该),那么您更有可能正在寻找反向代理。我的主要httpd是nginx,相关选项是proxy_pass。如果您使用的是apache,则可能需要mod_proxy。
答案 2 :(得分:1)
我刚刚在我的注册商处创建了一个“A记录”,指向我的网络服务器的IP地址。然后,您可以在端口80上启动节点应用程序。
答案 3 :(得分:1)
另一种方法是重定向:
http://www.foobar.com
至http://www.foobar.com:82
问候。
答案 4 :(得分: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进行生产时发现的最佳教程。
为了提高性能,您还设置了nginx来提供公共文件。
location /public {
allow all;
access_log off;
root /opt/www/site;
}