Articles of node.js

docker开发与Node.js和二进制node_modules

我正在为我的Node.js应用程序的开发环境的泊坞窗图像工作。 在运行docker映像时,会挂载一个卷,以便我的应用程序的源代码与主机的容器共享。 我遇到的问题是,不像大多数Node.js项目,我保持node_modules /版本控制(这里推荐http://www.futurealoof.com/posts/nodemodules-in-git.html )。 我需要注入node_modules /目录到容器中,使用ADD构build二进制模块,然后以某种方式让我的应用程序在docker容器的运行过程中使用它们。 # Docker official ubuntu 12.04 LTS FROM ubuntu:12.04 # See: https://launchpad.net/~chris-lea/+archive/node.js/ ENV NODEJS_VERSION 0.10.29-1chl1~precise1 # add updated node.js defacto official repository RUN apt-get update RUN apt-get install –yes python-software-properties RUN add-apt-repository ppa:chris-lea/node.js # install node.js RUN apt-get update RUN apt-get install –yes nodejs=${NODEJS_VERSION} # install other dependencies via […]

nginx用php和两个node.js路由

我有两条路线,我想通过两个节点进程(websocket路由,angular度的应用程序),而第三条路线需要传递给一个PHP应用程序,充当angular应用程序的restAPI。 我不是非常精通nginx 这是我的尝试: user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## […]

使用Docker和Vagrant搭配Node和Express

所以,在我开始之前,我是新手,因为当我给自己一个项目时我学得最好,所以我想用Vagrant和Docker来制作一个简单的Node和Express服务器,并在实际容器之外使用一个共享文件夹。 我跟着一个教程,解释类似的事情与Nginx和PHP(工作),所以请如果问题不是很好的结构或我的英语不完美让我知道! 正如我所说我想练习Docker(我最近开始使用它)并学习Vagrant。 这是我的Dockerfile: FROM ubuntu:latest RUN apt-get update RUN apt-get install -y software-properties-common RUN apt-get update RUN apt-get -y dist-upgrade RUN apt-get install -y nodejs npm RUN cd /home RUN npm install -g express RUN npm install -g express-generator RUN ln -s /usr/bin/nodejs /usr/bin/node RUN express projekt RUN cd projekt && npm install VOLUME […]

节点+ PM2 – 如何安全地读取非root用户的SSL私钥?

我正在寻找一种方法来通过PM2运行节点,同时读取放置在安全目录中的SSL私钥。 详细信息:带节点的Bitnami LEMP堆栈 / etc / ssl / private的权限: drwx—— 2 root root 4096 private 密钥文件的权限: -rw-r—– 1 root root 1704 my_key_file.key 有了上面的权限,nginx和php都可以正常运行,而且没有任何问题(我猜这是因为nginx的主进程是以root身份运行的),运行的节点也是sudo。 不过,我想以非root用户的身份运行这个节点代码,因为如果节点服务器受到危害,这样可以降低安全风险。 我在这里有什么select? 我理解它的方式就像这些选项: 松开私钥文件夹/文件的权限(错误,涉及对/ etc / ssl / private的更改!) 复制private_key并使其可读取,仅由运行pm2的安全用户读取(Bit messy,涉及跟踪复制文件的更新等) 以root用户身份运行PM2 master ,然后以非root用户身份生成一个进程/实例(就像nginx的工作方式一样,不知道这是甚么可能) 以root用户身份运行PM2,在以root身份执行某些操作之后,将代码更改为自己的特权级别(如此处所述 – 看起来有些杂乱,也可能存在安全风险) 任何forms的帮助,非常感谢! 谢谢

Nginx代理Nodejs(Dokku)。 CORS响应标题不通过

我正在使用Dokku在DigitalOcean上托pipe我的应用程序。 Dokku运行nginx 1.6来模拟类似Heroku的代理Docker应用程序。 该应用程序的所有共享类似的默认configuration,如下所示。 我的Node.js服务器使用CORS中间件告诉浏览器允许www.myapp.com打电话给api.myapp.com: 这在我的本地计算机上正常工作。 当我部署它,我在浏览器中得到一个CORS错误: XMLHttpRequest cannot load https://api.myapp.com/r_u_up. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.myapp.com' is therefore not allowed access. The response had HTTP status code 502. 所以,跆拳道,结束了。 我发现这个nginx CORSconfiguration,但它似乎非常crufty。 这是旧的代码,还是最好的方法? 这个插件使用该configuration。 我更喜欢简单的configuration,只是通过响应头。 我的应用程序不需要nginx来拦截它们。 我如何configuration? 应用程序的nginx.conf的: upstream www { server 172.17.0.135:5000; } server { listen [::]:80; listen 80; […]

与Apache负载平衡器的Socket.io 1.0粘滞会话

我一直在使用Apache作为我的Socket.io服务器的负载平衡器。 我经历了以下的话题,现在一切似乎都没有问题。 为Socket.IO 1.0configurationApache 2.4 mod_proxy_wstunnel 我使用以下configurationconfiguration了Apache,现在连接正在升级到WebSocket。 但是当我尝试为以下configuration启用粘性会话时,似乎有时候apache将路由升级请求路由到路由#2,同时在路由#1上build立轮询。 发生这种情况时,升级失败,websocket未连接。 因为我们必须使用平衡器(一个用于http,一个用于ws),所以我想也许http路由#1设置的cookie不能被ws路由访问,这就是为什么会话在http和ws之间不粘连的原因。 我使用的是Apache 2.4.9 <VirtualHost *:8080> Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED ProxyRequests off ServerName localhost <Proxy balancer://http-localhost/> BalancerMember http://localhost:8081 route=1 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900 BalancerMember http://localhost:8082 route=2 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900 ProxySet lbmethod=byrequests ProxySet stickysession=ROUTEID </Proxy> <Proxy balancer://ws-localhost/> BalancerMember ws://localhost:8081 route=1 keepalive=On […]

nodejs没有收到转发端口的请求

我试图让我的路由器转发对我的noipdynamicDNS的请求到我的本地计算机,我有一个nodjs运行,等待14555端口上的请求。 我有noip dns设置,以便在本地运行的netcat不会收到任何对14555端口的调用(即使用浏览器): ncat -l -n -v -v -k -p 14555 Ncat: Version 5.59BETA1 ( http://nmap.org/ncat ) Ncat: Listening on 0.0.0.0:14555 Ncat: Connection from xxx.xxx.xxx.xxx:56409. GET /socket.io/?EIO=3&transport=polling&t=1430939580269-4 HTTP/1.1 Host: someDomain.ddns.net:14555 Connection: keep-alive … NCAT DEBUG: Closing connection. Ncat: Connection from 84.167.116.141:56411. 但是,虽然通话似乎通过了一切,并到达我的机器,节点不听它。 它没有收到任何东西: HTTP server listening at 0.0.0.0:14555/ 我的接收服务器是这样configuration的: var self = this; // Start […]

在Apache服务器上从Http到Https NodeJS Websockets

这是我的问题。 我有一台虚拟机,在Windows上安装了Apache服务器(2.4)。 虚拟机在networking上,以便其他人可以直接在http://192.168.100.22 (ACTUALLY) 首先,http协议一切正常。 我已经设置了HTTPS连接到这个服务器。 (实际上是本地networking上的自签名证书) 我已经安装了一个nodeJs服务器并在此机器上的9001端口上侦听。 这只是应该pipe理websockets。 实际的问题是没有任何工作与HTTPS的任何使用。 NodeServerconfiguration如下: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); //… http.listen(9001,function(){ console.log('SERVER LISTENING'); }); 在客户端,一切工作正常与这种连接: var socket = io('ws://192.168.100.22:9001'); 现在所有的事情都在https协议上,这个连接失败了。 我必须做什么/更改,使我的套接字连接与https协议工作? 我试图将其更改为wss://而不是ws,试图在节点服务器中使用require('https')而不是http,但是没有任何工作正在进行中… 我面对的最后一个错误是: Cross-origin request blocked 感谢您的帮助/阅读

Nginx的proxy_pass和绝对path

我试图运行一些服务器上的nodejs应用程序(Ubuntu 14.04),使用Nginx,我快完成了。 这是我的服务器configuration( /etc/nginx/sites-available/default ): server { listen 80; server_name my_domain.com; location /test1 { proxy_pass http://127.0.0.1:5000/; 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; } location /test2 { proxy_pass http://127.0.0.1:5001/; 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; } } 我有几个应用程序运行,他们都运行良好,我可以访问http://my_domain.com/test2等… 问题是,在这个应用程序中,我有几个绝对path: 例如<a href="/">Home</a> 或(内部快递) […]

SSL – 同一Amazon EC2实例上的Apache和Node.js

我使用Apache在EC2实例上托pipe了我的网站。 SSL也被正确设置,在HTTPS,端口443上运行。 目前,我只是使用Node.js + socket.io添加聊天应用程序到网站。 Node.js服务器在端口3333上侦听。 如何在SSL安全的情况下在同一个实例上运行两台服务器(Apache和Node.js)? Amazon EC2不允许我为HTTPS打开另一个端口。 它只允许443的HTTPS。