在什么情况下,人们是否应该仅将Node.js用作实际部署中的服务器?
当一个人不希望只使用Node.js的,有什么用Node.js的发挥更好?Apache还是Nginx?
我有一个绑定了单个IP的Linux服务器.我想在此IP服务器上托管多个Node.js站点,每个站点(显然)都有一个唯一的域或子域.我希望他们都在80端口.
我有什么选择呢?
一个显而易见的解决方案似乎是让一个node.js网络应用程序服务的所有域都充当代理,并传递给在唯一端口上运行的其他node.js应用程序.
我最近一直在研究Node.js,并且遇到了一些关于编写基于Node.js的简单服务器的资料.例如...
var express = require("express"),
http = require("http"), app;
// Create our Express-powered HTTP server
// and have it listen on port 3000
app = express();
http.createServer(app).listen(3000);
// set up our routes
app.get("/hello", function (req, res) {
res.send("Hello World!");
});
app.get("/goodbye", function (req, res) {
res.send("Goodbye World!");
});
Run Code Online (Sandbox Code Playgroud)
...现在,虽然我似乎理解代码中发生了什么......我对术语有点困惑....因为当我听到术语服务器时,我会想到像Apache或Nginx这样的东西.我习惯于认为它们就像一个可以容纳我的Web应用程序的容器.Node.js服务器与Nginx/Apache服务器有何不同?基于Node.js的服务器(即代码)仍然可以放在像Nginx这样的东西中运行,这不是真的吗?那么为什么两者都被称为"服务器",尽管Node.js代码似乎是可以使用Nginx放置和提供的应用程序.
创建node.js应用程序非常简单.
var app = require('express')();
app.get('/',function(req,res){
res.send("Hello world!");
});
Run Code Online (Sandbox Code Playgroud)
但是假设人们开始沉迷于你的Hello World!
应用程序并耗尽你的资源.这个例子如何在实践中扩大规模?我不明白,因为是的,你可以在不同的计算机上打开几个node.js实例 - 但是当有人访问http://your_site.com/时,它直接针对那个特定的机器,那个特定的端口,那个特定的节点进程.又怎样?
我有一个node.ja服务器列表到端口4000,访问该服务的URL是这样的:
http://42.12.251.830:4000
Run Code Online (Sandbox Code Playgroud)
我买了一个域名
www.mychat.com
Run Code Online (Sandbox Code Playgroud)
如何将其分配给我的服务器?首先我使用转发,但后来我再也无法使用location.hash向网址添加聊天频道.然后我使用了像Header-Redirect这样的东西.现在可以通过mychat.com访问该服务,但不能访问www.mychat.com.此外,域名不会显示在浏览器窗口中.对于我的聊天频道,我需要这样的话:
www.mychat.com/#238husd4
Run Code Online (Sandbox Code Playgroud) 我有一个现有的PHP应用程序,我需要添加实时通知.为了实现这一点,我安装了node.js(打算为所有实时功能添加socket.io)
然而.尽管花了最后三个小时进行研究并试图了解如何整合这两者,但我发现自己没有接近获得理解.
我目前正在使用以下内容:
我已经编写了代码,它将一个事件从客户端发送到PHP并将通知插入到数据库中.当收件人刷新他们的页面时,他们当然会看到通知.我只需要node.js来处理推送到客户端的实时时间,但我不知道如何设置它.
鉴于这种情况,我真正需要知道的是:
最后,我希望能够运行PHP函数并期望node.js/socket.io/websockets将通知推送到客户端.我根本不知道如何到达那里.
提前感谢任何示例/信息/指南.
我正在尝试弄清楚如何在我的Ubuntu 10.04 LTS服务器上部署Node JS.我读过许多不同的博客和文章,解释了多种不同的方式.大多数似乎过时了,或者看起来并没有真正起作用.
似乎最简单的解决方案是使用像Forever这样的东西?......或Monit或Monit或Supervisor.那是对的吗?
我仍然不明白的一件事是没有使用像Ngnix这样的东西,我怎么能真正得到我的域名(例如example.com)来实际指向我的Node JS应用程序并且它正在运行端口?
非常感谢任何指导.我不是这方面的专家,所以请原谅我在这里缺乏知识.(我正在努力!:)
更新:我问这个的原因是在我的服务器上我有Ngnix运行我的静态/ Django项目.我想要使用相同的服务器来处理我正在搞乱的一些示例Node JS应用程序.我已经关注了关于vhosts和Connect with Node JS的链接,这很好用,但我仍然不明白如何让我的某个域实际指向我服务器上的Node应用程序?
在开始编写我的应用程序之前,我需要知道当单个node.js实例(express和(socket.io或nowjs))不再足够时该怎么做.
你现在可能告诉我,我不应该关心规模直到时间,但我不想开发应用程序并遇到麻烦,因为你不能轻易地在多个实例中扩展socket.io或nowjs.
我最近读到socket.io现在支持使用Redis进行扩展的方法(我也没有经验).Nowjs是基于socket.io构建的 - 它的工作方式是否相同?在nowjs.org上,您可以读到"NowJS的分布式版本"正在开发中,并且需要花钱.
我的最终目标是使每个服务器实例的node.js更具成本效益.
我不是在运营游戏或聊天室,而是为客户提供简单的网站.我想在一台服务器上容纳多个客户端,但是有多个网站使用主机头映射运行端口80.我想仍然使用快递,因为我正在做,但它更像是从端口80到其他节点应用程序的路由事件,如果这是可能的.如果它以这种方式完成节点可以更便宜,但目前它对我的目的而言更昂贵,因为如果在端口80上运行,每个客户都需要自己的盒子.此外,我的动机是关注节点开发但是必须有理由这样做所以在成本方面.
我在Windows中为ASP.NET做了很多这样的事情,因为IIS支持这种开箱即用的功能,我知道这对Apache来说也是正常的.
如果这不是正确的问题或者给予建设性的批评而不是随机的downvote,请随意将其移至堆栈交换中的另一个论坛.谢谢.
更新
我采用的方法是使用静态托管(通过gatspy和s3),然后使用API,通过来自客户端的邮件和来自服务器的API密钥注册域名,并在站点更改时定期生成静态站点,但感谢所有建议!
对于本地开发,我有一个工作的迷你管.我们部署了不同的服务.现在我想将前端与后端连接起来.
前端是一个有棱有角的应用程序,并以自己的服务为生.后端是一个node.js应用程序,它也使用单独的服务,并使用DNS连接到其他内部服务,如mongodb.
现在我想从前端与后端进行通信.DNS无法正常工作,因为前端不知道如何解析命名路由.问题是告诉前端它应该使用哪个后端URL和端口发送请求?
当我第一次使用NodePort类型启动Backend服务并将url和端口复制到Frontends目标URL时,接近了唯一的工作状态.我觉得这对我来说非常不洁净.是否有另一种方法可以将后端请求的URL添加到前端?
我知道当我们在具有type ="LoadBalancer"的生产系统上部署服务时,该服务是由外部IP公开的,然后我可以从那里访问该服务.并且外部IP将在pod更新等方面永久保留.我还看到的问题是后端IP需要通过额外的提交注入到docker容器中.
编辑(1):后端服务
apiVersion: v1
kind: Service
metadata:
name: backend
labels:
app: some-app
tier: backend
spec:
type: NodePort
ports:
- port: 3000
selector:
app: some-app
tier: backend
Run Code Online (Sandbox Code Playgroud)
编辑(2):当我从客户端请求fqn时,我也得到了这个响应:
OPTIONS http://backend.default.svc.cluster.local:3000/signup/ net::ERR_NAME_NOT_RESOLVED
Run Code Online (Sandbox Code Playgroud) node.js ×9
apache ×2
javascript ×2
deployment ×1
dns ×1
http ×1
kubernetes ×1
nginx ×1
php ×1
scalability ×1
socket.io ×1
ubuntu-10.04 ×1
url ×1