Articles of node.js

nginx:502使用node.js varnish和stunnel的时候坏了网关

我一直在关注这个教程 ,除了我的nginx设置,一切似乎都运行正常。 我的node.js应用程序在端口1337上运行,varnish在端口80上运行,443上的stunnel和8080上的nginx。 当我指定端口https://example.com:1337时,我可以正确地到达我的应用程序,但访问https://example.com时得到的是502 Bad Gateway错误。 这是我的nginx日志的输出: 2012/08/25 14:13:59 [error] 6049#0: *1 no live upstreams while connecting to upstream, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: "http://app_example/", host: "example.com" 2012/08/25 14:14:02 [error] 6049#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: […]

gcc沙盒工具 – Ubuntu 12.04上的AppArmor / CHROOT监狱

我们有一个Node应用程序作为C ++沙箱工具的前端,它使用gcc编译代码并将结果输出到浏览器。 例如 exec("gcc -o /tmp/test /tmp/test.cpp", function (error, stdout, stderr) { if(!stderr) { execFile('/tmp/test', function(error, stdout, stderr) {}); } }); 这工作正常。 然而,正如你所想象的那样,如果将它公诸于世 – 这是一个安全的噩梦 – 所以我想到了两个select来保护我的堆栈: 1)CHROOT监狱 – 但这本身不足以防止目录遍历/文件访问。 2)AppArmor? 所以我的问题是真的,我怎么能保护我的堆栈可能来自任何nasties: A)使用gcc编译未知的代码 B)执行编译的代码

首次开发者的基本的云&Node.js问题

我想用Node.js来理解云开发的概念和最佳实践,因为我没有find一个好的解释。 当你从Rackspace或任何地方购买虚拟机时,你是否能够访问SSH,然后在RAM / CPU分配的限制内运行你想要的任何东西? 我们可以在与Node相同的虚拟机上运行MongoDB进程,还是需要购买单独的虚拟机? 在同一个虚拟机器上,两者之间的通信会比分开的时候更快吗? 将nginx与Node结合使用来提供静态文件是一个好主意吗? (相同的虚拟机或不同的? 我们的应用程序需要用于image processing的数据库和GraphicsMagick。 如果我们使用像Heroku或Nodejitsu这样的服务(我相信这些服务被称为平台即服务),那么我们得到的只是Node的一个实例,而不是整个虚拟机,因此我们必须在其他地方购买我们的数据库托pipe和GraphicsMagick处理能力,对吗?

试图让Apache和nodejs一起玩,得到“setsebool:SELinux被禁用”?

我正在运行Ubuntu和Apache服务器。 我想尝试nodejs,我想通过Apache上的虚拟主机来运行它。 我阅读这篇文章,并试图按照说明: http : //thatextramile.be/blog/2012/01/hosting-a-node-js-site-through-apache 我设置了一切,但是Apache抛出了500错误,这似乎是这样的情况: 设置一个基本的mod_proxy虚拟主机 我试着运行这个命令: sudo /usr/sbin/setsebool -P httpd_can_network_connect 1 为了得到这个命令的工作,我不得不安装: sudo apt-get install policycoreutils 但是当我尝试命令时,我得到这个错误消息: setsebool: SELinux is disabled. 我所要做的就是能够将请求转发到nodejs.mydomain.com到端口8000上运行的nodejs守护进程。 如何启用setsebool ,或者有另外一种方法可以使nodejs和运行在80端口上的Apache服务器和平共处?

在运行CentOS的VPS上使用mongoDB运行node.js应用程序的问题

我已经注册了DirectAdmin的VPS,运行CentOS,我使用的是我从其他网站注册的域名。 我已经做了必要的configuration,使域显示VPS的默认页面。 我也使用CentOS安装了node.js和mongoDB,但是我一直在运行应用程序。 我为MongoDB设置了一个.conf文件,其中bind_ip被设置为VPS的IP,当我尝试在端口27017上运行MongoDB时,我收到以下消息: service mongod start Starting mongod: [ OK ] bash: /var/log/mongodb/mongodb.log: Permission denied 我认为这是由于我没有对VPS做任何授权的事实,但是我不知道如何进行授权。 我究竟做错了什么? 另外,我不能让node.js正常运行。 当我在CentOS上运行一个基本的node.js应用程序,端口3000,似乎一切正常,但是当我在端口3000上访问我的域名或VPS IP时,服务器不响应。 我如何解决这个问题? 我是否需要在我的VPS上configuration端口以使服务器响应? 当在浏览器中未指定端口的情况下打开域时,如何configurationVPS以连接到节点应用程序,而不是显示默认的index.html页面? 我在configurationVPS上的node.js方面没有任何经验,所以我的最后一个问题是:是否有关于在VPS上使用MongoDB运行node.js的教程? 提前致谢。 编辑:我解决了MongoDB的问题,只需重新安装它。 我猜在安装过程中第一次出现了问题。

部署meteor在我自己的领域(Ubuntu的)

我想在我的Ubuntu服务器上部署我的meteor应用程序,我用meteor.sh ,一切都成功了,但我根本无法从浏览器启动我的应用程序 我把我的IP地址,并得到一个404 The requested URL / was not found on this server. 我有apache2运行,我删除了它的redirect到8080(我用它以前的tomcat) 谢谢。

奇怪的等待来自node.js的静态文件在nginx代理后面expression

好的,所以标题可能有点混乱,但是这个问题真的是这样! 首先是第一件事:一点背景。 我正在为客户build立一个CI服务器,这个服务器应该用于自动testing和构build,以及他们提出的与CI有关的任务。 正在testing的解决scheme主要是networking解决scheme,这些解决scheme都在MII / NetWeaver Web服务器上运行。 这个Web服务器向开发人员提供了一个工具,它允许你在你的HTML中插入“代码片段”,然后在发送到浏览器之前,用一个可定制的值代替它。 很聪明。 但是,为了能够testing客户端代码,我需要尽可能使testing系统与此MII Web服务器分离。 所以我创build了一个小型的Node.js服务器应用程序,它就是这样做的 – 用configuration的值replaceHTML中的代码片段。 这很好用! 但是,我无法访问服务器API来testing客户端代码。 所以,使用nginx,我创build了一个反向代理,它将所有/ XMII / *请求转发给MII服务器。 简单,而且效果很好! 为了让所有的东西一起工作,我还为我的Node.js应用程序创build了一个反向代理。 这样,2个独立的服务器可以在同一个端口上访问,就像用户所期望的那样。 但是,在配对2(Node.js服务器和nginx反向代理服务器)的时候,我会在加载一些客户端文件的过程中看到1分钟(准确的说! 它从只有一个文件,到几个文件有所不同。 以下是一些屏幕截图,从Google Chrome的POV中完整显示发生了什么: 它说,它已经等待了1分钟的文件,并收到它在0毫秒? 这看起来更正常。 这里是我的configuration文件的Node.js服务器和nginx代理。 我已经删除了篡改HTML正文的代码,因为注释它们对性能没有任何影响。 Node.js服务器: var BASE = 'C:/Users/twj/Documents/git'; var CUSTOM_ATTRIBUTES = null; var http = require('http') ,express = require('express') ,tamper = require('tamper') //Used to tamper with the […]

识别htop中的特定节点进程

我有一个应用程序,启动了一些nodeJs进程。 这些进程并不都运行相同的JS代码,这些进程有三种types的“angular色”。 目前,如果我运行一些像htop一样的CPU使用情况,我无法区分正在运行的不同脚本(例如,如果使用大量的CPU,我无法知道节点处理哪个JS脚本运行)。 任何人都可以提出一种方法,我可以识别哪个JS脚本特定的节点进程正在运行? (最好通过壳)。

nginx node.js&socket.io 504超时

Nginxconfiguration server { listen *:80; server_name live.domain.com; server_tokens off; charset utf-8; error_log /var/log/nginx/live-error.log info; access_log /var/log/nginx/live-access.log; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:1337; proxy_redirect off; } } 当node.js工作的一切都没关系,但是如果node.js没有启动,我尝试加载页面http://live.domain.com/socket.io/socket.io.js,这让我等了30秒(read_timeout )。 我想这样做,如果node.js 不运行,我得到404或502错误,没有30秒等待超时。 换句话说:我需要立即检查客户端的node.js。

不能用nginx工作node.js服务器,页面始终是nginx的欢迎页面

我在aws云上启动了一个node.js服务器,服务器的位置是/ home / ubuntu / home / fablab。 我可以用端口80的nginx启动我的node.js服务器,一切工作正常。 然后我按照教程来在服务器上工作node.js和nginx,我将node.js端口重新configuration为61337,在/ etc / nginx / sites-available文件夹下build立一个fablab.conf,然后ln -s /etc/nginx/sites-available/fablab.conf /etc/nginx/sites-enabled/fablab.conf。 这是我的fablab.conf server { listen 80; server_name fablab; location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) { root /home/ubuntu/node/fablab/public; access_log off; expires max; } client_max_body_size 16M; root /home/ubuntu/node/fablab; index /home/ubuntu/node/fablab/public/forum.html; location / { access_log off; proxy_pass http://127.0.0.1:61337; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; […]