Varnish không hiển thị tiêu đề tùy chỉnh


0

Trong cấu hình Varnish 3 của tôi (default.vcl), tôi đã cấu hình các mục sau để truyền thông tin qua các tiêu đề phản hồi:

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
        set resp.http.X-Cache-Hits = obj.hits;
    } else {
       set resp.http.X-Cache = "MISS";
    }
    set resp.http.X-Cache-Expires = resp.http.Expires;
    set resp.http.X-Test = "LOL";

    # remove Varnish/proxy header
    remove resp.http.X-Varnish;
    remove resp.http.Via;
    remove resp.http.Age;
    remove resp.http.X-Purge-URL;
    remove resp.http.X-Purge-Host;
    remove resp.http.X-Powered-By;
}

Nhưng điều duy nhất tôi có thể thấy là

HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/html
Content-Length: 8492
Accept-Ranges: bytes
Date: Tue, 05 Feb 2013 10:11:02 GMT
Connection: keep-alive

Nó không hiển thị bất kỳ tiêu đề nào mà chúng tôi đã thêm vào bên trong vcl_deliverphương thức.

EDIT: Đây là phương thức vcl_fetch của tôi:

sub vcl_fetch {
    unset beresp.http.Server;
    unset beresp.http.Etag;
    remove req.http.X-Forwarded-For;
    set req.http.X-Forwarded-For = req.http.rlnclientipaddr;
    set beresp.http.X-Wut = "YAY";

    if (req.url ~ "^/w00tw00t") {
        error 750 "Moved Temporarily";
    }

    # allow static files to be cached for 7 days
    # with a grace period of 1 day
    if (req.url ~ "\.(png|gif|jpeg|jpg|ico|swf|css|js)$") {
        set beresp.ttl = 7d;
        set beresp.grace = 1d;
        return(deliver);
    }

    # cache everythig else for 1 hours
    set beresp.ttl = 1h;

    # grace period of 1 day
    set beresp.grace = 1d;

    return(deliver);
}

Bất cứ ai cũng có ý tưởng làm thế nào để giải quyết vấn đề này vì KHÔNG có tiêu đề tùy chỉnh nào được bao gồm trong tiêu đề phản hồi ... Như bạn có thể thấy ở trên trong vcl_fetchphương pháp của mình, tôi thêm một số tiêu đề phản hồi tùy chỉnh nhưng không có tiêu đề nào được hiển thị.

Câu trả lời:


0

vcl_deliverchỉ được gọi cho các đối tượng được tìm thấy trong bộ đệm. Bạn có thể có nghĩa là để sử dụng vcl_fetch.

Nếu đó không phải là vấn đề, bạn không hiển thị yêu cầu bạn gửi hoặc của bạn vcl_recv. Có lẽ bạn đang pipeing, ví dụ? Hãy thử gửi một yêu cầu thô qua telnet hoặc netcat và cho chúng tôi thấy cả những gì bạn đã gửi và nhận. Và vì bạn đang sử dụng vcl_deliver, hãy thực hiện cùng một yêu cầu hai lần để chúng tôi có thể gỡ lỗi chính xác.


Đã thêm vcl_fetchphương thức của tôi
Kenny

@Kenny vì vậy tôi cho rằng tiêu đề X-Wut của bạn không hiển thị? Có thể đáng để bỏ toàn bộ VCL của bạn vào đây. Trong trường hợp này, chúng tôi đang tìm kiếm những sai lầm và yêu cầu bạn biết những lỗi đó chỉ hoạt động ở đâu nếu bạn đã biết những sai lầm bạn đã mắc phải. Ví dụ: bạn đang sửa đổi nội dung reqcủa mình vcl_fetch, điều này sẽ không thực hiện được nhiều trong hầu hết các trường hợp. Điều này cho tôi biết rằng có lẽ bạn đang xây dựng một VCL chủ yếu từ các đoạn trích, điều đó có nghĩa là chúng ta cần phải xem toàn bộ bộ dụng cụ để chẩn đoán nguyên nhân của các triệu chứng bạn gặp.
BMDan

Ngoài ra, trong khi chúng tôi có tài liệu: vui lòng bao gồm một cặp yêu cầu / phản hồi hoàn chỉnh (không chỉ là phản hồi như bạn có ở trên) và đầu ra của "var Veclog" (bạn có thể vệ sinh địa chỉ IP nếu bạn muốn, nhưng hãy để lại nghỉ ngơi một mình, xin vui lòng) trong bài kiểm tra đó.
BMDan

Đó là trình duyệt của tôi đã che giấu những tiêu đề này;)
Kenny

@Kenny: Tuyệt vời! Vui lòng cập nhật câu hỏi của bạn và đóng nó.
BMDan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.