【问题标题】:Nginx multiple locations with rails static assetsNginx 多个位置与 rails 静态资产
【发布时间】:2012-07-23 05:04:38
【问题描述】:

我是使用 nginx 设置自己的服务器的新手,所以请原谅任何无知。我可能只是使用了错误的搜索词来查找我的问题的答案。

无论如何,我目前在机架空间上的 VPS 上使用 Rails 3、Nginx 和 Unicorn。在我的 Rails 应用程序中,我在 public/ 中有大约 500mb 的文件,我想使用 Nginx 来提供这些文件。通常这只是:

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/<my_user>/apps/<my_app>/current/public;
  ...
}

如果我将 500mb 公共添加到 git 存储库,然后使用 capistrano 部署,我可以完成这项工作,但我不希望所有这些文件都在我的 git 存储库中。将它们存储在那里没有任何意义,但如果我删除它们,那么我每次部署时都必须手动将它们上传到服务器上的公用文件夹。

有没有办法让 Nginx 指向第二个资产文件夹以供服务器使用?我尝试了以下方法:

location /static {
  gzip on;
  alias /home/deployer/static/;
}

我没有任何运气让它工作(试图通过 url.com/static/... 访问文件)有人知道我做错了什么吗?

旁注:所有显示的代码都在我的 config/nginx.conf 文件中,它应该通过我的 deploy.rb 中的这一行覆盖设置:

sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"

【问题讨论】:

    标签: ruby-on-rails-3 nginx capistrano unicorn


    【解决方案1】:
    location /static/ {
        root /home/deployer;
    }
    

    【讨论】:

    • 谢谢,我会试一试。我之前尝试过使用root,但它似乎没有用。当我读到有人建议尝试解决另一个类似问题时,我将其更改为别名。
    • 完美运行。我只是错过了 /static/ 将被添加到您在该位置提供的根目录中的事实。谢谢VBart。
    猜你喜欢
    • 2022-01-12
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多