Rails和Nginx:未重写的覆盖图像

时间:2015-10-05 19:57:44

标签: ruby-on-rails nginx passenger

我有一个使用Nginx和Passenger的网络服务器。

我上传了我的rails应用程序并让它运行。一切都很棒,但后来我决定改变一个图像(用另一个图像覆盖它)。我做到了,然后再次部署。我已经验证新图像位于assets / images文件夹中。

问题是我刷新了网络应用程序,并且html引用了旧图像。就像这样,直到我重新启动了nginx 。重新加载这个没有其他方法吗?因为如果我在同一台服务器上有多个Web应用程序,我不想仅仅因为我更新了一个Web资产而重新启动它们。

我的nginx conf:

server {
    # Path to ruby version
    passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.2.1/wrappers/ruby;

    listen       80;
    server_name mydomain.com;
    passenger_enabled on;
    root /var/www/myrailsapp/current/public;
    rails_env production;

    location ~ ^/assets/ {
       expires 1y;
       add_header Cache-Control public;

       add_header ETag "";
       break;
    }

    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
      expires 365d;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

您知道问题是什么?我如何避免重新启动nginx以重新加载新图像?

2 个答案:

答案 0 :(得分:1)

如需进一步参考,在@SeanHuber的帮助下,我必须做的就是重新启动乘客的应用程序。

我做了它运行命令:

passenger-config restart-app

有关详细信息:https://www.phusionpassenger.com/library/admin/nginx/restart_app.html#restart-txt

答案 1 :(得分:0)

不要重新启动nginx,只需重启乘客:

touch <app_dir>/tmp/restart.txt