我在AWS弹性beanstalk上运行了一个rails应用程序。对于站点地图生成,我使用的是this sitemap generator gem。我的sitemap.rb
文件中的设置非常基本:
SitemapGenerator::Sitemap.default_host = ENV['SERVER_ROOT']
SitemapGenerator::Sitemap.create do
add '/pages/help'
add '/pages/packing'
add '/pages/privacy'
add '/pages/security'
#...
end
站点地图由cron作业生成。为了提供站点地图,我在routes.rb
:
match '/sitemap.xml.gz', :to => proc {|env| [200, {}, [File.open(Rails.root.join('public', 'sitemap.xml.gz')).read]] }, via: :get
该文件将被传送到浏览器,但因为它似乎被gzipped两次。解压缩sitemap.xml.gz
会导致另一个.gz
存档。解压缩将产生正确的sitemap.xml
文件。
我做错了吗?导致第二次压缩的原因是什么?我该如何预防?
$ cat /etc/nginx/conf.d/webapp.conf
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
server {
listen 80;
server_name _ localhost; # need to listen to localhost for worker tier
location / {
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}
我应该注意到,压缩对于我的Vagrant开发机只运行puma
作为网络服务器是正确的。所以它可能确实是Nginx配置。