我在heroku上使用了Node.js + NGINX设置来完成很多项目.这样,您就可以让nginx处理静态文件,缓存,代理到其他服务器以及代理多个节点进程.
使用multi-buildpack buildpack(https://github.com/ddollar/heroku-buildpack-multi).
它允许您指定一个引用多个buildpack的.buildpacks文件.在我的.buildpacks文件中,我使用默认的Heroku Node buildpack,以及我重建的包含SSL支持的nginx buildpack的分支.
https://github.com/theoephraim/nginx-buildpack.git
https://github.com/heroku/heroku-buildpack-nodejs.git
Run Code Online (Sandbox Code Playgroud)
nginx buildpack使用可以引用ENV变量的nginx.conf.erb文件.你必须告诉它在名为"PORT"的环境变量中监听heroku指定的端口
listen <%= ENV["PORT"] %>;
Run Code Online (Sandbox Code Playgroud)
然后你的节点服务器启动你选择的任何端口,比如5001,在你的nginx配置中,你可以设置一个代理传递到你的节点应用程序:
location / {
proxy_pass http://127.0.0.1:5001;
}
Run Code Online (Sandbox Code Playgroud)
注意 - 你的procfile需要使用一个特殊的start-nginx命令(nginx buildpack的一部分),然后调用你传递给它的任何东西.在我的情况下,我永远使用运行我的节点应用程序:
web: bin/start-nginx ./node_modules/.bin/forever app.js
Run Code Online (Sandbox Code Playgroud)
在您的主节点文件中,您必须在成功启动时创建一个文件,以便向nginx buildpack发出信号,告知它应该开始监听
fs.openSync('/tmp/app-initialized', 'w');
Run Code Online (Sandbox Code Playgroud)
有关如何在自述文件中使用nginx buildpack的完整说明@ https://github.com/theoephraim/nginx-buildpack
归档时间: |
|
查看次数: |
5188 次 |
最近记录: |