Articles of node.js

在node.js服务器上使用nginx时,“websocket连接无效”

我正在使用Express.js创build一个服务器,我可以使用networking套接字连接。 即使它最终似乎工作(即,连接并将事件传递给客户端),我最初在Chrome的控制台中出现错误: 意外的回应码:502 在后端,socket.io只loggingwarn – websocket connection invalid 。 但是,nginxlogging这个: 2012/02/12 23:30:03 [error] 25061#0:* 81上游过早closures连接,同时从上游读取响应头,客户端:71.122.117.15,服务器:www.example.com,请求:“GET / socket .io / 1 / websocket / 1378920683898138448 HTTP / 1.1“,上游:” http://127.0.0.1:8090/socket.io/1/websocket/1378920683898138448 “,主机:”www.example.com“ 注意:我有nginx开发运行: nginx version: nginx/1.1.14所以它应该支持HTTP / 1.1。 另外请注意,如果我只是使用没有nginx的node.js服务器,它没有任何警告。 最后,这是我的nginxconfiguration文件: server { listen 0.0.0.0:80; server_name www.example.com; access_log /var/log/nginx/example.com.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header […]

如何从nginx服务器提供静态文件作为nodejs服务器的反向代理?

我目前的nginxconfiguration是这样的: upstream nodejs { server 127.0.0.1:3000; } server { listen 8080; server_name localhost; root ~/workspace/test/app; index index.html; location / { proxy_pass http://nodejs; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 我对nginx非常陌生,但至less我知道nginx比静态文件中的node / express更好。 我如何configuration服务器,使nginx服务于静态文件?

NGINXconfiguration使用Socket.IO

所以我一直试图让这个工作2天,我卡住了。 这是我第一次为使用NodeJS + Socket IO的railsconfiguration服务器。 我是NGINX和独angular兽的noob。 基本上我的应用程序的NodeJS + SocketIO部分将消息推送到连接到我的应用程序的用户。 这是我的nginx.conf server{ listen 80 default; root /home/deployer/saigon/public; try_files $uri/index.html $uri @unicorn; location /sockets { proxy_pass http://localhost:3210; } location @unicorn { proxy_pass http://localhost:3000; } } 在我的production.rb中,我已经configuration了用户将要发送消息给/接收消息的url SOCKET_IO_URL ='http://localhost:8080/sockets 为什么8080? 我使用stream浪者来转发8080 – > 80 我尝试访问http:// localhost:8080 /套接字 ,我能够得到套接字欢迎消息。 我看着我的NodeJS服务器日志,它正在接收消息好吧。 但是,当涉及到广播…..它只是不这样做。 有没有人曾经得到这种应用程序来设置我想要做的? 我应该去与Apache +独angular兽? “

nginx + nodejs + php

我有一个特定的URIscheme,这使我有些麻烦。 我需要运行nodejs来提供以下服务: domain.com var.domain.com var.domain.com/foo/ 我有这个工作没有问题,使用express.vhost()来提供子域。 但是,我需要服务静态内容和PHP一旦URI类似于以下内容: var.domain.com/foo/bar var.domain.com/foo/bar/index.php 在这里, /bar/是我服务器上的一些目录。 一切从这个url下来(比如/bar/images/favicon.ico )就像你的典型的目录scheme。 通常情况下,我会做典型的proxy_pass运行在某个端口上的节点,但正如你可以在这里看到的,我需要nodejs是端口80上的主要处理程序,并将其请求传递给运行在其他端口上的nginx(或反过来可能/更简单?)。 (nginx / php)/ nodejsconfiguration可以实现这种types的scheme吗?

bcrypt打破了我的meteor应用程序,我该如何解决?

我不知道这应该是一个stackoverflow或serverfault问题。 我安装了Meteor的帐号密码模块,它在本地工作,但是在部署到服务器时破坏了我的应用程序。 这是独家新闻: 我在OSX上本地运行最新的Meteor 1.0.5(OS完全更新)使用–architecture os.linux.x86_64构build部署到Ubuntu 14.04.2 LTS x86_64(刚刚更新)运行nodejs v0.12.1(新build)用nginx v1.4.0提供应用程序 仍然得到: /home/secrethistory/bundle/programs/server/node_modules/fibers/future.js:245 throw(ex); ^ Error: Module did not self-register. at Error (native) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at bindings (/home/secrethistory/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15) at Object.<anonymous> (/home/secrethistory/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) 任何提示或地方看下一个?

Nginx和多个Meteor / Nodejs应用程序的问题

我知道多个node.js,我假设扩展Meteor,可以使用Nginx运行在一台服务器上。 我已经安装了Nginx并在Ubuntu服务器上运行,我甚至可以让它响应请求并将它们代理到我的一个应用程序。 然而,当我尝试让Nginx代理第二个应用程序的stream量时,我遇到了一个障碍。 一些背景: 第一个应用程序在端口8001上运行 第二个应用程序在端口8002上运行 Nginx在80端口监听 尝试让nginx发送/到应用程序一的stream量和在/ app2 /到应用程序二的stream量 转到域:8001和域:8002可以访问这两个应用程序 我的Nginxconfiguration: upstream mydomain.com { server 127.0.0.1:8001; server 127.0.0.1:8002; } # the nginx server instance server { listen 0.0.0.0:80 default_server; access_log /var/log/nginx/mydomain.log; location /app2 { rewrite /app2/(.*) /$1 break; 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:8002; proxy_redirect off; […]

nginx vs node-http-proxy

请告诉我,用于部署nodejs应用程序nginx或node-http-proxy的最好方法是什么。 什么是最健壮的? 我需要的基本function是 代理所有请求非80后 负载均衡器 Websocket支持

在express / nodejs应用程序中服务存储在S3中的文件

我有用户的照片是私人的应用程序。 我在AWS s3中存储照片(缩略图)。 在网站上有一个用户可以查看他的照片(即缩略图)的页面。 现在我的问题是如何提供这些文件。 我评估过的一些选项是: 使用签名的url生成从CloudFront(或AWS)提供文件。 但问题是每次用户刷新页面,我必须再次创build这么多签名的url,并加载它。 因此,我不能够在浏览器中caching图像,这将是一个不错的select。 反正仍然有JavaScript呢? 由于安全问题,我不能长时间保持这些url的有效性。 其次,在这个时间框架内,如果有人得到这个url,他可以查看文件,而无需通过应用程序的身份validation运行。 其他选项是从S3服务器stream式传输后,从我的快速应用程序本身提供文件。 这使我有httpcaching头,因此启用浏览器caching。 这也确保没有人可以查看文件,而不经过身份validation。 理想情况下,我想stream式传输文件,而我正在使用NGINX代理中继将另一端stream式传输到NGINX。 但是,正如我所看到的,只有当文件存在于同一个系统的文件中才有可能。 但在这里,我必须stream,并返回时,我得到的stream是完整的。 不想在本地存储文件。 我无法评估哪两个选项是更好的select? 我想尽可能多地将工作redirect到S3或者cloudfront,但是即使使用单独的url也会首先将请求发送给我的服务器。 我也想要cachingfunction。 那么最理想的方法是什么? 与这些方法有关的特定问题的答案?

如何使用nginx docker容器访问本地主机上的服务器?

我正在尝试使用dockerized版本的nginx作为我的节点(ExpressJS)应用程序的代理服务器。 如果没有对容器的nginx和发布端口80进行任何configuration,我可以看到默认的nginxlogin页面。 所以我知道很多工作。 现在我可以安装我的站点启用的目录,其中包含proxy_pass localhost:3000的configuration。 我有我的节点应用程序本地运行(不在任何Docker容器中),我可以通过端口3000(即localhost:3000 )访问它。 但是,我会假设,与运行nginx容器,映射到端口80,并代理我的localhost:3000,我将能够看到我非常简单的(hello world)应用程序。 相反,我收到一个502。 我需要将东西传递给docker吗? 这可能是一个nginxconfiguration错误? 这是我的nginxconfiguration: server { listen 0.0.0.0:80; server_name localhost; location / { proxy_pass http://localhost:3000; } } 我试过使用这个问题,但似乎没有帮助。 那是除非我做了完全错误的事情。

WebSocket连接失败,nginx,nodejs和socket.io

我尝试用nginx设置nodejs。 但是,当客户端尝试连接失败… WebSocket connection to 'ws://www.mydomain.com/socket.io/1/websocket/KUv5G…' failed: Error during WebSocket handshake: 'Connection' header value is not 'Upgrade': keep-alive socket.io.js:2371 那么如何启用websocket通信呢? 我当前的nginxconfiguration upstream mynodejsapp { server 127.0.0.1:3000 max_fails=0 fail_timeout=10s weight=1; ip_hash; keepalive 512; } server { listen 80; listen [::]:80 default_server ipv6only=on; index index.html; server_name mydomain.com www.mydomain.com; keepalive_timeout 10; gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level […]