我正在使用NGINX来提供静态文件。 每当一个文件不存在时,我希望NGINX能够尝试asynchronous检索该文件的nodejs后端服务。 后端服务需要3个参数: GUID ,文件的大小和扩展名 。 所有这些参数都是使用正则expression式从原始请求中检索的。 这是我目前的NGINXconfiguration文件: server { listen 80; server_name .example.com; root /var/www; ## Serves file (matching pattern: /<size>/<MEDIA>/<file na-me><.ext>) location / { location ~* ^/(\d+x\d+)/(([\w])([\w])([\w])[-\w]+)/[^\.]+\.(\w+)$ { try_files /$3/$4/$5/$2/$1.$6 @backend/$2/$1/$6; } } ## backend service location @backend { proxy_pass http://127.0.0.1:8080; } } 但是我一直得到这个错误: 2012/01/23 11:53:31 [error] 28354#0: *1 could not find named […]
我目前正在Node.js上编写一个Web应用程序,并且很快将会设置我的Linux服务器来使其生存。 我很好奇,为我的Node应用程序的静态文件值得运行Nginx吗? 是否运行Nginx将代理服务器反向到可能运行在我的服务器上的任何其他Node应用程序,或者我应该使用像node-http-proxy这样的东西,而不是使用Nginx? 我的节点应用程序将使用socket.io 。 由于Nginx缺乏对http 1.1的支持,似乎在这里有一个工作。 基本上,让Nginx坐在我的服务器上的Node应用程序前面有什么好处,还是会妨碍它?
我正在使用最新版本的stable.js(0.8.19) $cd ~/downloads/node $./configure $make $sudo make install 这样做安装了node.js 现在,当我去: $cd ~/myproject/node_modules $npm install express npm ERR! Error: EACCES, open '/home/user/.npm/64a534c1-express.lock' npm ERR! { [Error: EACCES, open '/home/user/.npm/64a534c1-express.lock'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/home/user/.npm/64a534c1-express.lock' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! […]
我目前有一个设置,所有静态文件都由NginX提供,如果没有find静态文件,它将被移动到一个node.js服务器上。 不幸的是,我得到了根请求403错误。 其他一切工作正常。 server { listen *:80; error_page 404 = /404.html; root /web/sites/this.site.tld/static; index home; location / { try_files $uri $uri/ @proxy; } location @proxy { 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://thisSiteApp; proxy_redirect off; } } upstream thisSiteApp{ server 127.0.0.1:3000; } 我相当确定问题在于索引指令。 在静态中放置一个“index.html”文件并将该指令更改为“index index.html”的作品。 但是我真正想要做的是让它看起来像索引位置的节点服务器,而仍然服务我的静态文件,而不看节点。 NB。 如果我把代理服务器设置放在/位置节点服务器服务的根就好(没有静态文件,但它服务的一部分罚款)。
我有一个脚本,可以在启动时自动安装一些–global实例的npm包(特别是业务,我想用–global安装)。 问题是npm有时会随机失败,大概是由于networking打嗝,虽然我不完全确定是怎么回事。 为了排除networking,我想要做的就是下载npm的相关文件,并要求它在S3下载文件时根据这些文件安装业力。 但是我怎么做? 我如何告诉npm不要从中央存储库抓取文件,而是从其他地方抓取它们?
我喜欢使用NodeJS,而且我已经很好了。 目前我支付Heroku来托pipe我的NodeJS应用程序,但是我在Bluehost上也有一个很好的托pipe帐户。 但是,默认情况下,Bluehost不会运行我的NodeJS应用程序。 他们根本不提供要在他们的系统上安装的环境。 我和Bluehost的一位代表交谈过,他说我可以安装NodeJS,但他不能告诉我,因为那不是他的工作。 我不知道从哪里开始。 有没有人有关于如何可能去安装NodeJS的任何提示,所以我可以在我自己的服务器上运行我的NodeJS应用程序? 那将是真棒。 编辑 我有一个完整的BlueHost主机帐户,即与cPanel等。 我没有看到NodeJS的任何选项,一个代表告诉我NodeJS不是默认安装。 我将不得不自己安装它。 我不知道如何loginterminal,并做到这一点。 如果你能给我一些方向,我会很高兴。
在这个问题上,我在Apacheconfiguration文件中find了这部分代码: # rewrite rule to prevent proxy exploit RewriteCond %{REQUEST_URI} !^$ RewriteCond %{REQUEST_URI} !^/ RewriteRule .* – [R=400,L] 什么是代理漏洞? 它是如何工作的,这些线路如何防止这种攻击?
什么是重新安装node.js的最好方法?
我想提供节点应用程序作为我的域的path,如下所示: http : //example.com/foo实际上将服务端口8080上运行的节点应用程序。 我查看了ProxyPass和ProxyPassReverse: ProxyPass /foo http://localhost:8080 ProxypassReverse /foo http://localhost:8080 这将服务节点应用程序的index.html,但我在我的控制台中有关所有资产的错误: Failed to load resource: the server responded with a status of 404 (Resource not found) http://example.com/styles/4742a4e8.main.css 我认为ProxyPassReverse指令会照顾到这一点,但显然不是。 我对Apache的知识非常有限。 任何关于如何解决这个问题的好主意? 免责声明:是的,我已经看过很多nodejs结合Apache的问题,但没有一个解决在URL中使用子目录的问题
我想保持一个nodejs应用程序运行,所以我遵循这个: http ://howtonode.org/deploying-node-upstart-monit并安装了Monit和Upstart已经完美的工作了几个月。 我刚刚添加了一个function,我的应用程序,允许磁盘写入和获取权限错误。 我去寻找一切,因为它似乎权限错误不应该是问题。 事实certificate,我从Upstart开始的用户实际上并不是正在运行应用程序的用户! 当我运行: sudo -u deploy NODE_ENV=production node /srv/www/[name of my app]/dist/app.js 无论是通过Monit / Upstart,还是通过SSH,它都会创build2个进程。 从ps ax : 2869 ? Ss 0:00 sudo -u deploy node /srv/www/[name of my app]/dist/app.js 2878 ? Sl 0:01 node /srv/www/[name of my app]/dist/app.js 当我以deploy用户身份login并运行: NODE_ENV=production node /srv/www/[name of my app]/dist/app.js 只有一个过程! 3131 pts/1 Sl+ 0:04 […]