2012-01-02 93 views
3

我在Amazon Linux EC2服務器上安裝了一個nginx +乘客,運行Rails應用程序。該應用程序會產生JSON響應。gzip不能在nginx +乘客中工作

JSON響應呈現與長度頭部:

# test_controller.rb 
# result contains a large 400k JSON string 
headers["Content-Length"] = result.size.to_s 
render :json => result 

我試圖啓用gzip,但反應仍然沒有壓縮。我用GIDZipTest檢查了它。

# nginx.conf 
gzip on; 
gzip_http_version 1.1; 
gzip_comp_level 1; 
gzip_proxied any; 
gzip_vary on; 
gzip_min_length 500; 
gzip_types application/x-javascript application/json; 

回答

7

我有它正常工作,嘗試添加(文/ JavaScript的)

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 
+0

對不起,還是一樣。我相信在其他情況下可能會有幫助,可能其他情況下配置不正確。如果有任何幫助 - nginx也配置爲上游fcgi應用程序。 – 2012-01-02 21:35:29

0

解開了謎底。 php script不可靠。

這是可靠的:

wget --header="accept-encoding: gzip" URL 

獲取的壓縮版本。

使用Chrome和Charles嗅探器進行測試使我確信一切正常。

1

gzip_types正常工作!就我而言,應用程序/ JavaScript的還需要Ruby on Rails的

gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;