我试图运行一个Node.js服务器(与socket.io)作为我的主要应用程序的pub / sub服务器。 我把它推到服务器上,并创build一个子域(使用SSL)。 我的客户端HTML页面可以加载socket.io/socket.io.js ,但WSS握手不按预期工作: WebSocket connection to 'wss://ws.example.com/socket.io/?EIO=3&transport=websocket&sid=ogEegJXhjFh5lplgAAAF' failed: Error during WebSocket handshake: Unexpected response code: 502 我有一个在我的nginx中定义的SSL子域是这样的: server { listen 80; listen 443 default ssl; server_name ws.example.com; # ssl on; ssl_certificate /etc/nginx/certificates/certificate-ws-example-com.crt; ssl_certificate_key /etc/nginx/certificates/ws.example.com.key; # Redirect all non-SSL traffic to SSL. if ($ssl_protocol = "") { rewrite ^ https://$host$request_uri? permanent; } location […]
我有3个独立的部分到我的dockerized应用程序: nodeapp : node:latest运行expressjs应用程序的node:latest Docker容器,从/api访问时返回JSON对象。 这个服务器也是CORs根据这个网站启用的。 nginxserver :一个nginx:latest静态服务器,它只是托pipe一个index.html文件,允许用户点击一个button,使XMLHttpRequest到上面的节点服务器。 我的主机 node:latest的端口通过3000:80暴露给主机。 nginx:latest通过8080:80将其端口暴露给主机。 从主机我可以单独访问nodeapp和nginxserver :我可以发出请求,并从命令行使用curl查看从节点服务器返回的JSON对象,当我点击button(index.html)时,屏幕上可见localhost:8080 。 但是,当我尝试单击button时,对XMLHttpRequest('GET', 'http://nodeapp/api', true)的nodeapp失败,看起来没有看到nodeapp服务器(没有日志存在)。 我假设这是因为主机不明白http://nodeapp/api 。 有没有办法告诉docker,而一个容器正在运行,以将其容器链接别名添加到我的主机文件? 我不知道我的问题是否解决了我的问题。 它看起来好像我得到一个CORs错误返回,但我不认为它曾经击中我的服务器。 这是否与从主机访问应用程序有关? 这里是一个示例回购的链接 编辑 :我注意到,当使用单击button的堆栈发送一个响应从我的nginx容器 。 我很困惑,为什么它是通过该服务器路由作为nodeapp在我的hosts文件,所以它应该认识到相关性呢?
我正在尝试使pm2集群模块与socketio一起工作,但是当我访问/ hello时遇到错误。 由于集群利用了所有的CPU内核,socketio会感到困惑,所以我安装了socket.io-redis模块来处理这个问题 ,但是看起来它根本没有做任何与Redis(它是空的)或者socket.io ,我可能错过了一些非常明显的东西。 我使用Nginx作为Web服务器,而我的快速服务器localhost:8000指向localhost:80。 支票: Nginx的作品, http:// localhost / hello返回socketio的响应,我在浏览器控制台上看到它。 Redis实例处于打开状态 它工作,如果我启动我的服务器npm start而不使用群集,但sudo pm2 start bin/www -i 0在问题的底部产生的错误。 BACKEND 这是我的nginx.conf user myusernameishere staff; worker_processes 1; server { listen 80; server_name localhost; location / { 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://localhost:8000; } } app.js […]
我试图更新我们的网上商店http2与服务器推送function,但我找不到像Nginx的networking服务器(代理和一些其他东西)与上游http2的解决scheme。 我们在Moment节点上使用节点http模块,但是会切换到节点spdy模块。 Spdy模块支持使用Server Push的http2。 我曾经尝试用h2o替代nginx,但是它也不支持http2 Upstream。 我有点失落,需要帮助
我将节点js应用程序部署到AWS EBS。 当我运行该应用程序时,出现错误“502 Bad Gateway”nginx / 1.6.2。 这是我在日志中发现的。 2016/08/13 08:46:03 [warn] 14418#0: duplicate MIME type "text/html" in /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf:42 2016/08/13 09:22:25 [error] 14421#0: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 118.36.218.138, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "cider-1.siwrszgawk.ap-northeast-1.elasticbeanstalk.com" 2016/08/13 09:22:25 [error] 14421#0: *2 connect() failed (111: Connection refused) while […]
问题 我试图发送请求到在Ubuntu(14.04)linux上运行的远程nginx(1.10.0)/节点(4.2.6)服务器。 它在大多数情况下都能正常工作,但是如果头部大小很大,请求将失败,并出现以下错误。 < html > < head > < title > 400 Request Header Or Cookie Too Large < /title></head > < body bgcolor = "white" > < center > < h1 > 400 Bad Request < /h1></center > < center > Request Header Or Cookie Too Large < /center></body > < /html> 我的testing头大小为8,260字节,由逗号分隔的ID组成,如下所示… […]
这是我如何使用nginxconfiguration我的反向代理。 有运行nodeJS应用程序的docker容器(app1,app2,…) 有了这个,我通过localhost:8080指向docker容器app1 nodeJS应用程序,并使用localhost:8081指向app2。 但我想通过子域调用应用程序,而不使用端口,我不明白怎么做到这一点。 我也想我搞砸了港口… app1.localhost应指向app1而app2.localhost应指向app2 。 nginx.conf http { sendfile on; upstream docker-app1 { server app1:80; } upstream docker-app2 { server app2:80; } server { listen 8080; server_name app1.localhost; location / { proxy_pass http://docker-app1; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; #proxy_next_upstream error timeout […]
我主要使用node.js作为我的项目,我使用nodemon进行开发并forever生产。 我通常把我的项目分解成虚拟主机,所以我的结构可能是这样的: bootstrap.js apps/ admin/ front/ api/ 和我的bootstrap.js看起来像这样: // Get Express var express = require('express'); // Create express server var app = express.createServer(); // Configure Development Environment app.configure('development', function() { //app.use(express.vhost('localhost', require('./apps/front'))); app.use(express.vhost('localhost', require('./apps/admin'))); app.use(express.vhost('localhost', require('./apps/api'))); app.listen(3000); }); // Configure Production Environment app.configure('production', function() { app.use(express.vhost('example.com', require('./apps/front'))); app.use(express.vhost('admin.example.com', require('./apps/admin'))); app.use(express.vhost('api.example.com', require('./apps/api'))); app.listen(80); }); 当我想开始我的应用程序,我forever start […]
我有一个nodejs应用程序,我想在一个多核(2CPU * 2Cores = 4Cores)服务器上运行。 在阅读了一些关于这个主题的SO线程之后,我决定在4个不同的端口上启动4个独立的节点实例,并使用nginx在它们之间进行负载平衡。 我决定在节点集群上使用这种方法。 现在,这是我的问题。 我真的很感激任何反馈: 在2cpu * 2cores / cpu = 4核心服务器与1cpu * 4cores / cpu = 4core服务器上启动4个节点实例的方式是否有区别。 我不认为有什么区别,但只是想确认。 我有一个conf文件来启动我的服务。 这个conf文件实际上是驻留在/ etc / init中的一个脚本,并启动我的节点应用程序。 我应该从这个1个conf文件启动4个实例,还是应该创build4个conf文件,并为每个conf文件启动一个实例。 再一次,我觉得后一种方法比较好,但是想确认一下。
我有一个nodejs服务器像这样构造:(app.js): var fs = require('fs'), http = require('http'), https = require('https'), express = require('express'), connect = require('express/node_modules/connect'), app = module.exports = express(); var ssl_options = { key: fs.readFileSync('/etc/nginx/ssl/server.key'), cert: fs.readFileSync('/etc/nginx/ssl/server.crt') }; var server = https.createServer(ssl_options, app); // EXPRESS // app.set('view options', { layout: false }); var auth_token = "asdfasfdasdfasdf"; var express_session_id = "express.sid"; app.configure(function () […]