2012-08-29 124 views
0

首先,我對nginx很陌生。Nginx - W3 Wordpress緩存規則

我試圖在託管wordpress網站的一系列Nginx服務器上實現gzip壓縮和瀏覽器緩存規則。我從下面的頁面代碼是應該放在nginx.conf文件: http://codex.wordpress.org/Nginx

W3的總緩存規則

# BEGIN W3TC Browser Cache 
gzip on; 
gzip_types text/css application/x-javascript text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; 
location ~ \.(css|js)$ { 
    expires 31536000s; 
    add_header Pragma "public"; 
    add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate"; 
    add_header X-Powered-By "W3 Total Cache/0.9.2.3"; 
} 
location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ { 
    expires 180s; 
    add_header Pragma "public"; 
    add_header Cache-Control "max-age=180, public, must-revalidate, proxy-revalidate"; 
    add_header X-Powered-By "W3 Total Cache/0.9.2.3"; 
} 
location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { 
    expires 31536000s; 
    add_header Pragma "public"; 
    add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate"; 
    add_header X-Powered-By "W3 Total Cache/0.9.2.3"; 
} 
# END W3TC Browser Cache 
# BEGIN W3TC Skip 404 error handling by WordPress for static files 
if (-f $request_filename) { 
    break; 
} 
if (-d $request_filename) { 
    break; 
} 
if ($request_uri ~ "(robots\.txt|sitemap(_index|[0-9]+)?\.xml(\.gz)?)") { 
    break; 
} 
if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) { 
    return 404; 
} 
# END W3TC Skip 404 error handling by WordPress for static files 

我試圖把它放在http {部分,並重新啓動服務器,但它表示位置在錯誤的地方。

是否需要進入server {?或者什麼是最好的地方呢?

謝謝!

回答

1

來自http://nginx.org/en/docs/http/ngx_http_core_module.html#location我們知道接受的位置塊的上下文是服務器和位置。

所以,是的,你需要把位置塊的服務器塊內(或嵌套在另一個位置塊,但你的配置不這樣做)

gzip的位已被允許的」 http服務器的情況下,位置,如果位於「根據http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip,所以你可以把它們放在你的http或服務器塊中。