Articles of node.js

Passenger node app中的process.env.PATH未定义(生产模式)

我最近用Phusion Passenger为nginx部署了一个节点应用程序,在这个过程中遇到了一个非常奇怪的错误: 我的代码抛出一个错误,试图派生一个child_process。 我做了一些debugging,最终得出结论,问题出现在$PATH环境variables在节点中未定义,我可以通过一个像这样的passenger_env_var指令来解决这个问题(显示我的nginxconfiguration文件的摘录): server { listen 80; server_name blargh.com; root /home/user/blargh.com/build; passenger_enabled on; # For some reason $PATH isn't loaded into node, and we can't spawn child processes without it passenger_env_var PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games; } 我仍然没有弄清楚是什么引起了这个问题 – 设置passenger_load_shell_envvars on; 没有帮助,www-data用户在shell中定义了一个$PATH envvar。 此外,其他的环境variables(如$SHELL )似乎已经被节点加载,增加了为什么$PATH被排除在外的奥秘。 有谁知道什么可能导致这个问题?

节点js + Nginx +亚马逊Linux + SSL

我有一个节点JS应用程序运行在AWS Linux服务器与SSL。 我想实现nginx一样。 我GOOGLE了它,并阅读,如果我在nginx中实现ssl,那么节点应用程序运行在http。 所以我configurationnginx conf如下,并用普通的http服务器运行node js应用程序: listen 443 ssl; server_name myserver.com; ssl_certificate myserver.chained.crt; ssl_certificate_key myserver.key; ssl_client_certificate myserver.crt; ssl_verify_client optional; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header VERIFIED $ssl_client_verify; proxy_set_header DN $ssl_client_s_dn; proxy_pass http://127.0.0.1:3000; } 现在应用程序运行在http以及https上。 我想要实现nginx,并通过ssl和应用程序只运行在https上。 我的方法是正确的,我错过了什么?

Node.JS代理与Nginx和Docker

我有一个docker容器与nodejs,我有一个与Nginx的docker集装箱。 我已经告诉我的angular度来使用ec2-xxx:8888 / api来使用api的。 因为我运行了我的nodejs容器: docker run -d -p 8888:8888 –name nodejs localhost:5000/test/node-js-image:1 所以我在我的亚马逊上映射了我的docker的8888。 所以这是工作。 我的app.config.js包含: URL: 'http://ec2…', PORT: '8888', 我可以在ec2:8888/api上看到我的ec2:8888/api但是这并不能保证让你的api能够访问服务器。 所以我想运行我的nodejs像这样: docker run -d –name nodejs localhost:5000/test/node-js-image:1 所以没有映射在我的亚马逊的港口的容器端口。 但我仍然需要从我的nginx容器访问nodejs容器。 我怎样才能做到这一点? 我尝试在我的nginx.conf: http { upstream node-app { least_conn; server nodejs:8888 weight=10 max_fails=3 fail_timeout=30s; } server { listen 80; location / { alias /usr/share/nginx/html/dist/; index index.html; […]

通过Nginx无SSL证书转发HTTPSstream量

我想使用Nginx来暴露我的NodeJS服务器侦听端口443。 我不想用Nginxpipe理SSL证书。 我宁愿使用SNICallback选项在https.createServer服务器上执行此https.createServer 。 如何设置nginx.conf来支持这个?

nginx响应“301永久移动”

考虑下面的nginxconfiguration文件: server { listen 443; ssl on; ssl_certificate /etc/tls/cert.pem; ssl_certificate_key /etc/tls/key.pem; location / { proxy_pass http://api.default.svc.cluster.local; } } 所有传入的TCP请求443应redirect到我的服务器上运行api.default.svc.cluster.local:80 (这是一个节点REST-Api btw)。 这工作正常,我可以curl https://<nginx-IP>/ nginx并得到正确的响应,如预期的那样。 现在,我想将位置从/更改为/api ,所以我可以启动一个curl https://<nginx-IP>/api以获得与以前相同的响应。 1.尝试 所以我把configuration中的位置线改为: location /api { 不幸的是,这不会工作,而是我得到一个错误Cannot GET /api这是一个节点的错误,所以很明显,它被路由到API,但仍然有些臭。 2.尝试 这似乎是一个URI的尾部斜杠是必需的,所以我把它添加到位置: location /api/ { 现在有所改变。 我不会像以前那样得到相同的错误,而是得到一个“301永久移动”。 我怎样才能修复我的nginxconfiguration文件? 有关环境的其他信息 我正在使用部署nginx反向代理包括的kubernetes部署。 configuration介绍。 然后我使用kubernetes服务公开nginx。 此外,我尝试使用kubernetes ingress来处理这种情况,使用相同的路由,但是,入口服务将响应一个default backend – 404消息。

nginx,上游,cors失败

无法理解为什么我的上游/ CORSconfiguration失败。 这阻止了一些本地开发和testing。 我得到了一个没有'Access-Control-Allow-Origin'头在从local.mysite.com:8081到events.mysite.com进行API请求时出现在请求的资源上 。 这是我的服务器configuration/ etc / nginx / sites-available / mysite # the IP(s) on which your node server is running. I chose port 3000. upstream mysite { server 127.0.0.1:3000; } # the nginx server instance server { listen 0.0.0.0:80; server_name mysite events.mysite.com; access_log /var/log/nginx/mysite.log; # pass the request to the node.js server […]

如何通过套接字nginx代理url

我在我的应用程序中使用套接字,我想从nginx传递套接字连接url作为代理url.I正在这样做 我的套接字代码 var socket = io.connect('/explorer/socket',{ 'reconnect': true, 'reconnection delay': 500 }); 我的nginx conf location /explorer/socket { proxy_pass http://xxx.xxx.xx.xxx:3000; } 但它不工作,它连接到我的本地主机,但我想连接我的代理url,我已经在nginx中定义。 所以我怎么可以通过代理url内io.connect?

如何使代理重新validation来源的资源

我有一个Nginx反向代理与我的原始服务器在同一台机器上。 我希望代理caching来源的dynamic内容,但是当客户端重新validation资源时,我希望代理与原点一起重新validation,而不仅仅是返回304到客户端而不检查原点。 例如,如果我将max-age设置为60秒,则代理将愉快地返回304那段时间,而不检查原点。 我已经build立了一个testing,每秒产生一个新的etag,像这样(使用node.js express): app.get('/dynamic/:file?', function(req, res){ var filename = req.params.file; var filepath = path.join(__dirname, 'files', filename); res.setHeader('Cache-Control', 'public, must-revalidate, proxy-revalidate, max-age=60, s-maxage=60'); res.setHeader('ETag', filename+etagCounter); res.sendfile(filepath); console.log('request', requestCounter++); console.log('etag', etagCounter); console.log('date', new Date().toISOString()); }); 而在Nginx中,通过这个请求的路由是这样configuration的: location /cache/ { access_log on; add_header Vary "Accept-Encoding"; add_header X-AppServer $upstream_addr; # Backend Server / Port add_header X-AppServer-Status $upstream_status; […]

如何在使用docker-compose时为mongodb图像添加-auth?

我使用docker-compose来运行由node,mongodb,nginx创build的项目; 我已经使用docker build构build了这个项目 然后我使用docker up -d nginx来启动我的项目。 但我还没有findconfiguration运行MongoDB的图像与' – auth',所以如何添加' – auth'当撰写启动mongodb? 这里是我的docker-compose.yml: version: "2" services: mongodb: image: mongo:latest expose: – "27017" volumes: – "/home/open/mymongo:/data/db" nginx: build: /home/open/mynginx/ ports: – "8080:8080" – "80:80" links: – node_server:node node_server: build: /home/laoqiren/workspace/isomorphic-redux-CNode/ links: – mongodb:mongo expose: – "3000"

无法在一个子域上运行多个NodeJs服务器

我试图运行多个NodeJs服务器(官方)Kik Chatbots与我的networking服务器上的一个子域不同的webhooks。 但是,我无法做到这一点。 对于一个机器人它工作得很好。 这是我的设置只有一个工作的NodeJs服务器: 让我们假设所有的webhook都位于https://bots.mydomain.com app.js: 'use strict'; let util = require('util'); let http = require('http'); let request = require('request'); let Bot = require('@kikinteractive/kik'); let bot = new Bot({ username: "foo", apiKey: "bar", baseUrl: "https://bots.mydomain.com" }); bot.updateBotConfiguration(); // … code … let server = http.createServer(bot.incoming()).listen(process.env.PORT || 8080); 所以这个Nodejs服务器基本上是监听端口8080 。 因此,我的网站https://bots.mydomain.com nginxconfiguration如下所示: server { root […]