簡體   English   中英

設置變化:接受編碼 Header (nginx)

[英]Set Vary: Accept-Encoding Header (nginx)

我有一個 nginx 服務器,似乎找不到任何有關如何發送 Vary: Accept-Encoding headers for CSS 和 JS 文件的信息。 有人有這方面的信息嗎?

謝謝!

這來自 nginx文檔

 gzip_vary syntax: gzip_vary on|off default: gzip_vary off context: http, server, location

啟用"Vary: Accept-Encoding"的響應 header 。 請注意,此 header 會導致 IE 4-6 由於錯誤而無法緩存內容(請參閱2 )。

如果你只是添加gzip_vary on; 它應該做它的工作。

還要確保您有任何一個 gzip、gzip_static 或 gunzip 指令處於活動狀態。

在要設置的域/子域的server {中,添加

    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types    text/plain application/x-javascript text/xml text/css;
    gzip_vary on;

保存文件並重啟 nginx。

簡單的。 在 Nginx 配置文件中:

vim /etc/nginx/nginx.conf

在該部分的底部附近添加以下內容:

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

只需取消注釋gzip_vary on; 參數並重新啟動或重新加載 nginx 服務:

service nginx restart

這應該可以解決問題。 如果您運行的是舊版本的 nginx,您可能需要啟用gzip on; ,因為這是使不同的 header 工作所必需的。

我希望這有幫助。 僅供參考,這適用於所有服務器/站點配置文件,除非在它們各自的服務器塊中被覆蓋。 server {}

Source info for nginx, apache and IIS: https://www.maxcdn.com/blog/accept-encoding-its-vary-important/

如果您已經嘗試了其他答案並且仍然看到變化(例如,如果您正在使用 GTMetrix 測試頁面的速度),那么以下可能會有所幫助:

確保您的所有 gzip_types 也在 /etc/nginx/nginx.conf http 部分中設置。

/etc/nginx/sites-available/* 中的服務器塊是您可以設置不同的 header 和 gzip_types 的地方,但根據您的站點設置方式,您可能會在文件到達該配置位之前處理和返回文件.

在 /etc/nginx/nginx.conf 中,你會找到一個“http”部分——在這里,還有一個 gzip_types 和 gzip_vary。

對我來說 - CSS 和 JS 是 static 文件,並且在點擊(wordpress)nginx 站點可用文件(我在它的前面有varnish)之前被提供。

因此,將 gzip_types 的完整列表添加到 nginx.conf 中的 http 部分解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM