我有相同的IP几个node.js实例。 通过nginx反向代理在不同的域上运行的每个实例。 例如: map_hash_bucket_size 128; map $host $backend_servers { hostnames; default 127.0.0.1:3000; example.com 127.0.0.1:3001; example.net 127.0.0.1:3002; example.org 127.0.0.1:3003; } server { listen 1.2.3.4:80 default_server; server_name _; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_pass http://$backend_servers; # upstream here proxy_redirect off; } } 我想要将来自example.com的path前缀/foo所有stream量定向到127.0.0.1:3002并从服务器中删除example.net 。 到example.net/bar旧链接应该redirect到状态301永久移动到example.com/foo/bar 。 这是我的最终目标: […]
我通过nvm在新的ubuntu 14.04系统上安装了节点。 一切都很好。 第二天,我启动并没有安装节点: The program 'node' can be found in the following packages: * node * nodejs-legacy Try: sudo apt-get install <selected package> 我尝试'nvm安装稳定',并得到: v0.12.5 is already installed. Now using node v0.12.5 (npm v2.11.2) 这工作正常(据我所知),直到下一次重新启动。 我已经尝试了所有明显的'nvm使用####'并删除/重新安装。 没有效果。 如何在重新启动时进行安装?
我正在寻找一个系统来通过sockets.io创build一个活的套接字应用程序,并且可以平衡而没有问题。 有大量的解决scheme来平衡多个套接字实例之间的负载,如SocketCluster,但我面临的问题是,当负载平衡器决定,而不是10个实例我需要8个实例,并closures其中2,我怎么能保持这些实例的套接字连接? 试图更好地解释它,我有一个事件stream媒体公司,几乎所有的周末stream事件,但没有在两者之间。 如果我使用亚马逊EC2,我只会有一个实例,几乎有0个用户连接,但在周末亚马逊将启动一些事件,当一个事件开始stream,并将路由每个连接到不同的服务器。 我看到的问题是,当事件结束并且人们开始退出时,负载平衡器将开始closures实例,而仍然连接到这些实例的人将开始失去与聊天的连接。 我知道我可以简单地通过重新连接这个人来解决这个问题,但有可能在他们重新连接的时候丢失一些消息。 有没有一个系统,将连接路由到另一台服务器,并知道是连接到另一个实例的同一用户,而不重新连接?
我有一个nodejs开发服务器。 我目前正在AWS EC2微型AMI上运行。 我有一个硬件设备,不断通过套接字向服务器提交数据。 服务器然后调用一个API,提交处理后从硬件设备接收的数据,并将其存储在本地的Mongodb实例中。 设备每5秒提交一次数据。 API当前驻留在不同端口上的同一台服务器上,稍后将移至另一台服务器。 3个API调用后,我的服务器挂起。 提交套接字数据时每5秒钟可以进行一次API调用吗? 我应该实现某种排队机制来收集套接字数据并进行处理吗? 亚马逊会认为它是一个DDOS攻击,因为一个API会不断被触发。 难道我做错了什么? 在稍后的运行中,我的套接字服务器,我的API服务器和我的mongodb实例将拥有它自己的专用服务器。 目前我正在使用开发环境。
我想在Apache(2.4.7)服务器提供的域( /home/www/public )的子文件夹( /home/www/public/v1 )中运行meteor.js应用程序。 我已经build立了一个虚拟主机,监听端口80,并代理以“v1”开始的位置到nodejs应用程序。 它工作正常(我认为),除了我得到一个由meteor.js生成的404页面。 我必须修改meteor.js设置来接受来自“domain.tld / v1”而不是“domain.tld”的请求吗? 如果是这样,哪个文件? 这种设置可能吗? 虚拟主机configuration (为易读性编辑) <VirtualHost *:80> ServerName domain.tld DocumentRoot /home/username/www/domain.tld/public <Directory /> Options FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /home/username/www/domain.tld/public/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from All Require all granted </Directory> # NODEJS APP in V1 FOLDER ProxyRequests on […]
我有一个简单的nginx 1.4.6代理在专用的Ubuntu 14服务器上运行。 我的configuration如下所示: server { listen 80; listen 443 ssl; listen [::]:80; listen [::]:443 ssl; server_name impequid.dodekeract.report; ssl_certificate /etc/letsencrypt/live/impequid.dodekeract.report/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/impequid.dodekeract.report/privkey.pem; location / { proxy_pass http://127.0.0.1:44400; proxy_set_header Host $host;proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } 当我试图达到这个文件,它发送一小部分后超时。 它总是停在同一条线上。 后端运行一个Node.js / Koa服务器,该文件可以直接加载,没有任何问题。 当通过nginx加载时,Koa在尝试写入时报告了一个坏的pipe道错误,因为问题只发生在nginx上,我不认为这是Koa的错。 任何想法我做错了什么?
我试图使用HAProxyredirect在不同的nodejs webserver上工作在三个不同的端口。 我想要的是,当我尝试打开/ node1 HAProxyredirect到该Web服务器。 这是HAProxyconfiguration: frontend dispatcher mode http bind *:80 acl node_serv1 url_beg /node1 acl node_serv2 url_beg /node2 acl node_serv3 url_beg /node3 use_backend backend_1 if node_serv1 use_backend backend_2 if node_serv2 use_backend backend_3 if node_serv3 backend backend_1 mode http balance roundrobin option httpchk server web01 127.0.0.1:3001 check backend backend_2 mode http balance roundrobin option […]
我试图让一个幽灵博客运行SSL和http2。 SSL工作正常,但不断在HTTP1.1服务。 我试图弄清楚为什么这个事情继续发生。 我的nginx conf文件如下所示: server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com-0001/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com-0001/privkey.pem; ssl_dhparam /etc/letsencrypt/live/example.com-0001/dhparam.pem; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; add_header Strict-Transport-Security max-age=31536000; add_header X-Frame-Options DENY; location / { proxy_pass http://localhost:2368; proxy_set_header Host $http_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-Proto $scheme; proxy_buffering off; } } server { listen […]
我正在使用带有restify框架的node.js启动一个REST服务器。 因此,将没有静态页面。 但是,ssl(https)将是必需的。 把http服务器放在一个地方或者是一个不必要的复杂的东西是一个好主意?
我试图redirect在我的局域网中生成的所有httpstream量到在特定机器上运行的node.js代理。 我用的是: iptables -t nat -A PREROUTING -s 192.168.1.3 -p tcp –dport 80 -j DNAT –to 192.168.1.2:8080 (此时testing一台源机器,代理服务器位于192.168.1.2:8080)。 不幸的是,stream量并没有达到代理。 我可以看到数据包计数器在规则上递增,如果我向LOG添加另一个规则,我可以看到来自192.168.1.3机器的httpstream量的日志条目。 代理,但是,不会得到stream量。 我有它设置为logging请求连接,我什么也没有看到。 如果我有浏览器使用192.168.1.2:8080作为代理,它工作得很好。 node.js代理是一个随机redirectstream量的简单透明代理。 var httpProxy = require("http-proxy"); var http = require("http"); var url = require("url"); var net = require('net'); var redirect_host = url.parse(redirect_url).host; var server = http.createServer(function (req, res) { var urlObj = url.parse(req.url); […]