部署 关于 Nginx 同步静态资源的配置问题

giggs · 2015年11月05日 · 最后由 giggs 回复于 2015年11月09日 · 3023 次阅读

nginx 机器上没有部署 rails server,我想让 nginx 来处理静态资源,我需要把 public 文件夹 同步到 nginx 机器上来吗?还是要在 nginx 机器上也部署 rails server?

反向代理好了

略微麻烦,其实 Nginx 的机器上面可以部署 Rails 项目的代码,但 App Server 可以不用跑起来

#1 楼 @huacnlee 恩,部署一份 Rails 项目 这个思路不错,谢谢

做个同步就行吧 在 rails 服务器上传的资源直接可以通过运维层同步到你的 nginx 服务器上去

#3 楼 @hxh1246996371 恩,同步查了查感觉略麻烦点,不如直接部署套 Rails 项目不启动它方便,但是也有个问题,用 Capistrano 来部署的话,没法设置 让某一台机器,不启动 Rails server 吧?

#4 楼 @giggs 其实你的整个流程应该是,Rails 上传资源->nginx 访问资源。你在 nginx 部署项目也没有解决你的问题啊,最终应该是 rails 服务器上传资源到本地->同步到 nginx 服务器上->浏览器访问 nginx 的资源。

#5 楼 @hxh1246996371 在 nginx 部署项目的话,这样不就相当于同步了项目目录了嘛,只是不用启动 Rails 而已,这样请求静态资源就直接在 nginx 服务器上返回了

#6 楼 @giggs 可能是咱们理解得不一样。你所谓的在 nginx 上部署项目是将 Rails 项目部署在和 nginx 一台服务器上吗,这样的话肯定是没问题的。但是如果你的 Rails 服务器和 nginx 服务器不在一台机子上,那么你在 nginx 上就相当于有了额外的一个项目,而且是没有启动的,在用户上传资源时,不还是上传到 Rails 项目服务器上的吗?难道还能跑 nginx 那台机子上去了。不知道是不是我没有理解你的意思。

#8 楼 @hxh1246996371 恩 我的意思就是“在 nginx 上部署项目是将 Rails 项目部署在和 nginx 一台服务器上”,但我的疑问是:我用 Capistrano 来部署的话,我不想让 nginx 这台机器上 Rails server 启动,不知道能这样在 Capistrano 上配置吗

#9 楼 @giggs 没用过 Capistrano,不过你让 nginx 只作为一个纯的静态服务(不用 passenger?),让 Rails 跑在你自己的服务环境下(unicon?),两者互不干扰就行。还有就是,是否考虑使用七牛、阿里云 OSS 等云存储?

#9 楼 @giggs 可以定义 Capistrano 的 role 来区别配置的

#11 楼 @hxh1246996371 恩 nginx+unicorn,一些用户上传的图片什么的用了云,一些自己的 js,css,图片,就想直接放在 nginx 端返回行了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号