Articles of node.js

Node.js服务器最初与systemd EADDRNOTAVAIL失败

我有一个需要从外部机器的HTTP请求启动脚本,我使用Node.js。 我希望服务器从系统启动。 一切正常,除了看起来服务器在启动过程中过早启动: — Logs begin at Mon 2017-01-23 09:55:21 UTC, end at Mon 2017-01-23 10:36:20 UTC. — Jan 23 09:55:24 powercontrol systemd[1]: Starting Energenie Listener… Jan 23 09:55:24 powercontrol systemd[1]: Started Energenie Listener. Jan 23 09:55:28 powercontrol node[474]: events.js:160 Jan 23 09:55:28 powercontrol node[474]: throw er; // Unhandled 'error' event Jan 23 09:55:28 powercontrol […]

Apache ProxyPass根到NodeJS和/ admin到PHP-FPM

我一直试图通过NodeJS处理所有的请求,除了通过mod_proxy进入/ admin目录,但没有成功。 这是我想出的configuration,但它不工作。 <VirtualHost *:80> ServerName domain.com DocumentRoot /home/sites/domain.com/ RewriteEngine on ReWriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] </VirtualHost> <VirtualHost *:443> ServerName domain.com DocumentRoot /home/sites/domain.com/ ProxyRequests on ProxyPassMatch ^/(.*)$ http://localhost:3000/ ProxyPassMatch ^/admin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/sites/domain.com/php/public/$1 timeout=600 ProxyTimeout 600 SSLEngine on SSLCertificateFile /home/keys/domain.com.crt SSLCertificateKeyFile /home/keys/domain.com.key </VirtualHost>

代理机器将SQL Server请求转发到Azure云中的另一台SQL Server计算机上

所以目前的问题是,我们inheritance了许多机器,总共有大约500个应用程序的exe。 我们正在移动,并意识到有人没有保存源代码,有太多的应用程序来识别和重写。 问题声明:数百台机器正在向用户sa和一个BLANK PASSWORD发送请求到SQL Server :(为了这个举动,我们在Azure Cloud中设置了一切,Azure SQL在VM(IaaS)上强制执行密码策略。 INTERCEPT和TRANSFORM试图连接使用某种types的PROXY层的任何应用程序 我正在看节点代理的东西,和SQL服务器别名等..但似乎是我想要做的是这样的 代理服务器机器 –> 500 incoming SQL Server connections –> Server \\XSQL2 –> User "sa" –> Password "" 所以 <add key="conn" value="data source=XSQL2; initial catalog=SomeDB;uid=sa;pwd=" /> 但随后代理将处理委托给Azure并发送(replace) <add key="conn" value="data source=myclouddbs.westus.cloudapp.azure.com,1433; initial catalog=SomeDB;uid=myUser;pwd=MyPassword123" /> 我有什么意义吗?

如何模拟服务器testing的高带宽stream量

我正在开发一个类似CDN的项目,我想强调testing我的服务器,这是一个运行在10Gbps VPS上的最小的nginx + nodejs + ubuntu。 我想模拟看起来更像服务器的预期用途:大约10GB的二进制数据由nodejs服务于nginx后面。 与服务器的连接可以是http或https,每个连接都是持久的,每个连接总共需要1MB的块数据,总共需要10-20MB。 一些连接可能在100mbps,低延迟(连接的20%),有些连接可能会低至100-200kbps,砰平时间为500ms(连接的5%)。 我的目标是产生接近10Gbps理论上限的stream量,并尝试监控服务器状态,收集分析数据,以便能够看到我的东西在负载下如何工作。 连接到我的服务器的客户端也是我自己的代码。 在所有的客户端,我想保存日志,然后结合并分析它们,以估计当我的服务器的请求负载合并为理论限制的50%,75%,… 90%,100%,120时,整个系统的总体结果%等。在这些负载期间,我的目标是观察服务器:RAM使用,CPU负载,连接丢失率,validation日志logging(以确保组合的客户端logging匹配服务器logging的结果)。 我的计划是首先在1Gbps服务器上进行testing(在不同地理位置的10-15 x 100mbps服务器上模拟客户端)。 由于我控制客户端,我只是让他们运行某些情况下,并以不同的速度节stream下载,以模拟缓慢的clinets。 如果你需要强调testing这样的设置,你会怎么做? 我的方法有什么问题吗?为什么?

通过NGINX反向代理看不到“_ *”头

我已经设置了一个nginx的反向代理来服务我的前端通过端口80,然后被redirect到443 ssl https和我的api后端节点 – expression在端口5000 over / api上。 到目前为止的基本工作,除了我不能通过json-web-token进行身份validation。 我总是得到一个“未经授权的”。 尝试通过邮递员和access_token是100%正确的。 对不起,如果这个问题之前已经被问过了(已经search了几天),但是这个话题对我来说是非常新的,我不想在涉及安全问题时做一些事情。 我的nginxconfiguration看起来像这样 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; return 301 https://$host$request_uri; } # HTTPS — proxy all requests to the Node app server { # Enable HTTP/2 listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name example.com; root /var/www/example.com/html; […]

nginx / node.js / postgres,可伸缩性问题?

我有一个应用程序运行: 一个nginx实例作为前端(服务静态文件) 后端的一个node.js应用程序集群(使用cluster和expressjs模块) Postgres作为DB的一个实例 如果应用程序需要可伸缩性(这仅适用于HTTP / REST请求),那么这种体系结构是否足够: 每秒500个请求(每个请求只从数据库中获取数据,这些数据可能是几个ko,并且在获取之后不需要大的计算)。 20000个用户同时连接 哪里可能是瓶颈?

什么导致SocketException(9001)在node.js app和MongoDB ReplicaSet中处理请求?

我有一个简单的node.js应用程序,使一个调用连接调用到我的副本集。 事情今天早些时候工作正常,应用程序没有任何改变,现在我的连接失败(默默),我在我的mongod日志中看到以下内容。 Thu Apr 18 17:16:56 [conn1782026] end connection 10.xxx:50720 (40 connections now open) Thu Apr 18 17:16:57 [initandlisten] connection accepted from 10.xxx:50721 #1782027 (41 connections now open) Thu Apr 18 17:16:57 [initandlisten] connection accepted from 10.xxx:50722 #1782028 (42 connections now open) Thu Apr 18 17:16:57 [initandlisten] connection accepted from 10.xxx:50723 #1782029 (43 connections now […]

mongoose / mongodb DoS -ing一个nodeJS实例

在AWS VPC中有一个nodeJS实例,向另一个可用区域中运行的mongodb实例发出请求。 节点实例被一个特定的请求打了很多 。 该请求用于从mongodb实例中获取大量信息。 在第一个查询条目被caching了一段时间之后。 昨天发生了一些数据,它回来了。 有了这样的代码: console.log('before retrieve'); Model.find({}).exec(function() { console.log('after retrieve'); }); 如果在“检索”之前碰到10次,然后就停止,自己动手。 我删除了一些数据,这是暂时的修复。 在mongoDB方面,我有时会看到: SocketException handling request, closing client connection: 9001 socket exception [SEND_ERROR] 我怎样才能避免这种情况发生?

Nginx随机拒绝SSL连接

我正在运行一个Nginx反向代理的网站https://telerandom.com (NodeJS服务器,端口9576)。 它通常工作,但有时它会开始拒绝来自某些用户的所有SSL连接(而对于其他人而言,这是完全正常的)。 这个拒绝SSL连接的时间通常会持续大约45分钟,然后事情恢复正常。 我注意到同一networking上的设备(例如我的笔记本电脑和同一WiFinetworking上的手机)同时遇到这些故障。 但是,如果我要断开手机与WiFi的连接并使用手机数据,则可以正常连接到网站。 端口80和443都在服务器上打开。 当连接被拒绝时,我在错误日志中得到这些消息: 2015/07/24 20:36:19 [debug] 1695#0: *92 post event 0000000002327BB0 2015/07/24 20:36:19 [debug] 1695#0: *92 post event 000000000233B3C0 2015/07/24 20:36:19 [debug] 1695#0: *92 delete posted event 000000000233B3C0 2015/07/24 20:36:19 [debug] 1695#0: *92 http run request: "/socket.io/?EIO=3&transport=websocket&sid=_32mgWR6o50vOl7pAAAC" 2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream process upgraded, fu:1 2015/07/24 20:36:19 [debug] […]

configurationCentOS 6 iptables使用端口80运行在端口3000上的NodeJS应用程序

我正在使用AWS运行一个CentOS 6的新实例。 iptables中有一些东西阻塞了我的nodejs应用程序。 这是我的nodejs应用程序: var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); 按照这个指南 ,我尝试用下面的命令为我的应用添加一个条目: sudo iptables -t nat -A PREROUTING -i eth0 -p tcp […]