Articles of node.js

使用nodejs和nginx进行切换

上下文 我使用nodejs(nodejs-0.10)在Openshift上运行一个应用程序。 我想添加一个ngix作为第一个代理来只提供静态文件。 问题 问题是如何将nginx添加到Openshift上正在运行的应用程序。 我看到这个墨盒gsterjov / openshift-nginx-cartridge,但是README指示如何使用nginx创build一个新的应用程序,但不知道如何将其添加到现有的应用程序。

试图从羽毛里面configurationsocket.io

尝试从nginx后面的feathersjs + socket.io服务器,它没有安装在根目录下。 大部分的feathersjs可以正确configuration,但在尝试调用socket.io的pathconfiguration时遇到了困难,例如http://socket.io/docs/server-api/#server#path(v:string):server nginxconfiguration: upstream socket_nodes { ip_hash; server localhost:19090 ; } server { … location /spx { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://socket_nodes; # root html; # index index.html index.htm; } } 和node.js代码: var feathers = require('feathers'); var app = feathers(); app.configure(feathers.rest()); // […]

Websockets – 避免未知的连接

我有网站X运行一个websocket服务器(socket.io,全部基于node.js),并为客户提供实时数据。 现在,竞争对手Y开始连接到我们的websocket服务器,并直接从中窃取数据,并将其显示在他们的网站上。 我已经做了很多阻止他们的IP的尝试,但他们会在几分钟之内不断改变它。 (各种AWS /云托pipe提供商)。 我检查引用标题,用户代理,接受语言,几乎所有的东西都是可欺骗的,他们已经这样做了。 websocket连接通过nginx代理,如果有帮助的话。 你会怎么做?

卷没有安装在nginx容器中

我有下面的组成文件,启动2个容器 services: nginx: container_name: nginx build: ./nginx/ ports: – "80:80" links: – node:node volumes_from: – node node: container_name: node build: . env_file: .env command: npm run package 节点的dockerfile FROM node:6.0 # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY […]

WebSocket连接到'ws://…/socket.io/'失败:在WebSocket握手期间出错:net :: ERR_CONNECTION_RESET

我正在使用nginx和代理到我的应用程序,它使用node.js上的socket.io作为websocket连接。 当通过域访问应用程序时,出现上述错误。 我已经根据https://github.com/socketio/socket.io/issues/1942configuration了nginx,以确保websockets被正确代理到node.js后端。 我的nginxconfiguration如下: server { listen 80; server_name domain.com; location / { proxy_pass http://xxx.xx.xx.xx:8080; 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; } } 在我的反应客户端中,我以这种方式启动websocket连接: import io from 'socket.io-client'; componentWillMount() { this.socket = io(); this.socket.on('data', (data) => { this.state.output.push(data); this.setState(this.state); }); } 任何build议表示赞赏! 编辑1: 经过更多的调查。 我的服务器设置如下: 可从互联网访问的域名:web-facing.domain.com 可从Intranet访问的域:internal.domain.com 当我从内联网访问应用程序时,它工作正常,但从互联网访问时得到错误。 […]

使用Express和nginx反向代理的Vue路由器历史logging模式

我已经configurationnginx将所有请求传递给节点: server { listen 80; server_name domain.tld; location / { proxy_pass http://localhost:3000; 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; } } 在服务器上,我有一个运行Express的Node应用程序,它服务于我的Vue索引文件。 app.get('/', (req, res) => { res.sendFile(`${__dirname}/app/index.html`); }); 我想用Vue路由器来使用HTML5历史logging模式,所以我在路由器设置中设置了mode: 'history' 。 我安装了connect-history-api-fallback并设置它: const history = require('connect-history-api-fallback'); app.use(history()); 如果用户第一次访问http://domain.tld ,路由工作正常。 但是,如果直接访问子路由或页面刷新,我得到一个未发现的错误。 如何更改我的configuration?

如何正确configurationNginx的Node.js REST API?

我有一个运行在Apache和Nginx服务上的节点应用程序作为反向代理。 在同一台服务器上还运行一个Node REST API。 JavaScript代码如下所示: api.js // Express const express = require('express'); const bodyParser = require('body-parser'); const cors = require('cors'); // Express App const app = express(); // Env const PORT = process.env.PORT || 3000; const NODE_ENV = process.env.NODE_ENV || 'development'; // Config app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(cors()); // Routes const users = require('./routes/users'); […]

Nginx无法从Node / Express应用程序发送完整文件

发送大文件(1.5GB)到连接速度<2MBps的客户端会导致浏览器只接收1.08gb的数据,但相信下载完成。 更快速的连接可以接收完整的1.5GB文件。 我的Express.js应用程序计算出哪个文件发送并response#download方法: app.get('/download-the-big-file', function(request, response) { var file = { name: 'awesome.file', path: '/files/123-awesome.file' }; response.header("X-Accel-Redirect: " + file.path); response.download(file.path, file.name); }); 请注意,我将X-Accel-Redirect头设置为利用NginxXsendfile 我的Nginxconfiguration: server { client_max_body_size 2g; server_name localhost; location / { proxy_pass http://127.0.0.1:8000/; } location /files { root /media/storage; internal; } }

Heroku上的Node.js + SSL。 SSL由Nginx或Node.js处理?

我目前正在使用 Express 2.x Node 0.8.x 我必须通过吗? key和cert参数express.createServer()通过Node.js处理SSL? 或者Heroku上的Nginx处理SSL?

Socket.io使用xhr-polling时,服务器的响应时间很长

我正在尝试扩展消息应用程序。 我使用nodeJS与Socket.io和Redis的存储在后端。 客户端可以是iPhone本地浏览器,安卓浏览器等 我使用SSL进行节点连接,使用Nginx来平衡套接字连接。 我不是群集我的socket.io应用程序,而是我负载平衡超过10节点服务器(我们有大量的用户)。 当运输是Websockets的时候,一切看起来都很好,但是当它回到xhr-polling(旧的android手机的情况下)时,我看到New-relic中一个巨大的响应时间高达3000 rpm。 而且我必须每隔一个小时左右重新启动节点服务器,否则服务器崩溃。 我在想,如果我做错了什么,并且在使用xhr-polling传输时,是否有任何措施可以用来扩展socket.io? 例如增加或减less轮询持续时间?