Rails 和 Nginx:未重新加载被覆盖的图像
Rails and Nginx: Overwritten images not reloaded
我有一个带有 Nginx 和 Passenger 的网络服务器。
我已经上传了我的 rails 应用并获得了它 运行。一切都很好,但后来我决定更改图像(用另一个图像覆盖它)。我这样做了,然后再次部署。我已确认新图像位于 assets/images 文件夹中。
问题是我刷新了网络应用程序,html 引用了旧图像。就这样,直到我重启了nginx。没有其他方法可以重新加载吗?因为如果我在同一台服务器上有多个网络应用程序,我不想仅仅因为我更新了一个网络资产就重新启动它们。
我的 nginx 配置:
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 以重新加载新图像?
不重启nginx,只重启passenger:
touch <app_dir>/tmp/restart.txt
为了进一步参考,在@SeanHuber 的帮助下,我只需要重新启动 passenger 上的应用程序。
我做到了运行命令:
passenger-config restart-app
更多信息:https://www.phusionpassenger.com/library/admin/nginx/restart_app.html#restart-txt
我有一个带有 Nginx 和 Passenger 的网络服务器。
我已经上传了我的 rails 应用并获得了它 运行。一切都很好,但后来我决定更改图像(用另一个图像覆盖它)。我这样做了,然后再次部署。我已确认新图像位于 assets/images 文件夹中。
问题是我刷新了网络应用程序,html 引用了旧图像。就这样,直到我重启了nginx。没有其他方法可以重新加载吗?因为如果我在同一台服务器上有多个网络应用程序,我不想仅仅因为我更新了一个网络资产就重新启动它们。
我的 nginx 配置:
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 以重新加载新图像?
不重启nginx,只重启passenger:
touch <app_dir>/tmp/restart.txt
为了进一步参考,在@SeanHuber 的帮助下,我只需要重新启动 passenger 上的应用程序。
我做到了运行命令:
passenger-config restart-app
更多信息:https://www.phusionpassenger.com/library/admin/nginx/restart_app.html#restart-txt