0

我有一个在 Ubuntu 上运行并使用Passenger 的Rails 应用程序(3.2.x)。

我添加了选项

gzip on;

进入 nginx.conf 文件,但测试页面

http://www.gidnetwork.com/tools/gzip-test.php

显示未使用压缩。

我的 nginx.conf 文件如下所示:

worker_processes  8;
events {
    worker_connections  1024;
}
http {
    passenger_root /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19;
    passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p392/ruby;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    server {
      listen    80;
      server_name  xxx.com;
      root /var/www/xxx/public;  
      rewrite        ^ https://$server_name$request_uri? permanent;
      passenger_enabled on;
    }
    server {
      listen 443;
      server_name xxx.com;
      root /var/www/xxx/public;
      passenger_enabled on;
      ssl on;
      ssl_certificate     /etc/ssl/private/ssl_xxx_com_certificate.txt;
      ssl_certificate_key /etc/ssl/private/ssl_xxx_com_private_key.txt;
      ssl_client_certificate /etc/ssl/private/cabundle.txt;
      ssl_session_timeout  5m;
      ssl_protocols  SSLv2 SSLv3 TLSv1;
      ssl_ciphers  HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers   on;
    }
}
4

2 回答 2

6

你 gzip 正在工作。也许您不应该使用网络浏览器来验证这一点。我使用了 curl,它显示 gzip 已打开。见最后一行。

 curl -IL -H "accept-encoding: gzip" http://vircurex.com/
HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.6
Date: Mon, 25 Mar 2013 10:52:42 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: https://vircurex.com/

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Status: 200
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.19
X-UA-Compatible: IE=Edge,chrome=1
ETag: "b36d8bb7e713ad93aeb6e5fb1e351135"
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: v0100session=BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTEyZjQ0ZGJjOWI0NTQ4ZGMwNGQxZWM2YTNiZWJjZDcxBjsAVEkiFmlucHV0X2RldmljZV90eXBlBjsARkkiCk1PVVNFBjsARkkiFGhvdmVyX3N1cHBvcnRlZAY7AEZUSSIQX2NzcmZfdG9rZW4GOwBGSSIxRmNkOGViQXlTL0t1K3l2TTlVVUQwbmFZVW1VZHpoQ1kwT2JkZlhrU3pDZz0GOwBG--3cc39d4d71943811224fb350b8ed6cd0a7d6e363; path=/; HttpOnly
X-Request-Id: c1be4f7e0ebaffbdfd7a1da0b47143c8
X-Runtime: 0.154884
Date: Mon, 25 Mar 2013 10:52:47 GMT
X-Rack-Cache: miss
Server: nginx/1.2.6 + Phusion Passenger 3.0.19
Content-Encoding: gzip
于 2013-03-25T10:54:25.903 回答
0

您的问题是您没有指定 gzip 的类型。将以下行添加gzip_types到您的配置文件中:

gzip on;
gzip_types text/css text/xml application/x-javascript application/atom+xml text/mathml text/plain text/vnd.sun.j2me.app-descriptor text/vnd.wap.wml text/x-component;

您可能需要调整类型以适合您的配置。

请注意,text/html默认情况下是启用的,因此您不必指定它。如果您使用 http 调试器,您将看到您当前的配置(没有上述gzip_types行)确实对php文件进行了 gzip 压缩,但对其他类型没有。

于 2013-03-25T01:20:08.207 回答