Nginx proxy ngược, khi nào nên sử dụng cache vs store?


8

Tôi đang trong quá trình tái cấu trúc ngăn xếp web của dự án của mình thành: nginx -> haproxy -> nhiều trường hợp (đường ray apache / hành khách)

Một số mục tiêu bao gồm:

  • vị trí duy nhất cho bộ nhớ đệm trang (hiện được thực hiện qua đường ray trên mỗi máy apache)
  • nội dung tĩnh nhanh hơn
  • loại bỏ ssl từ đường ống nội bộ
  • đăng nhập ip (bị mất trước đây do chạy haproxy ở chế độ tcp)

Các tài sản hình ảnh / biểu định kiểu / javascript được lưu trong bộ nhớ cache, với các tiêu đề phù hợp. Bộ nhớ đệm trang của chúng tôi dựa trên các tham số bên trong và không nên phản hồi với các điều khiển bộ đệm thông thường. Để đạt được những kết thúc này, cấu hình của chúng tôi trông giống như

server {

    ...

    location /really_slow_dynamic_content/ {
        root /var/www/tmp;
        error_page 404 = @fetch;
    }

    location @fetch {
        internal;
        proxy_pass   haproxy_ip;
        proxy_store  /var/www/tmp${uri}_cache.html;
        proxy_store_access  user:rw  group:rw  all:r;
    }

    location /assets/ {
        proxy_pass   haproxy_ip;
        proxy_cache  assets;
    }

    location / {
        proxy_pass   haproxy_ip;
    }
}

Tôi không thực sự là một sysadmin, và tôi biết có rất nhiều lựa chọn thay thế / điều chỉnh / bổ sung có thể hữu ích. Tôi cũng không hiểu lắm về sự khác biệt giữa proxy_cache và proxy_store. Vì vậy, với câu hỏi thực tế của tôi ...

Cho đến khi chúng tôi chuyển tài sản sang máy nginx, việc sử dụng proxy_cache cho nội dung và proxy_store cho nội dung động chậm có hợp lý không?

Ngoài ra, nếu có những cân nhắc hoặc phần mềm khác mà tôi nên xem xét, tôi rất thích nghe về chúng. Cảm ơn bạn!


Kể từ khi đăng câu hỏi này, tôi đã nhận ra rằng cấu hình ban đầu tôi đã sử dụng hoàn toàn không sử dụng cửa hàng và lỗi error_page và cài đặt nội bộ từ ví dụ wiki chính thức (bán?) Không chính xác tùy chọn (cấu hình được cập nhật tại đây kể từ khi nó dường như đang hoạt động và một cấu hình hoạt động có vẻ như là một di sản tốt hơn cho câu hỏi này). Vì vậy, sử dụng cửa hàng để tạo các trang đầy đủ (và hiếm khi được cập nhật) và bộ đệm thực tế cho hình ảnh, javascript và những thứ đó dường như đang hoạt động khá tốt đối với chúng tôi. Tôi sẽ chấp nhận một câu trả lời, vì ít nhất nó đã cho tôi một hướng dẫn để theo dõi vấn đề của mình, nhưng tôi vẫn không biết liệu tôi có sử dụng hai chỉ thị theo cách mà họ dự định không hoặc không (tốt, ít nhất là không liên quan đến cửa hàng, bộ đệm có vẻ rõ ràng hơn một chút).


Đối với mục đích kế thừa, cuộc thảo luận này rất hữu ích cho tôi khi giải quyết những vấn đề này. ruby-forum.com/topic/140394
Chris

Câu trả lời:


3

Nếu bộ nhớ phục vụ cho tôi một cách chính xác, proxy_store lưu trữ biểu diễn nhị phân của một yêu cầu cho một mục trong khi proxy_cache lưu trữ một bản sao được lưu trong bộ nhớ cache của mục đó ở dạng cơ sở.

proxy_cache thực sự là một công cụ lưu trữ phù hợp với nhiều cấp độ và phù hợp để lưu trữ nội dung từ nhiều trang web bằng cùng một khóa.

Cá nhân tôi sử dụng proxy_cache để lưu trữ hơn 2 tỷ hình ảnh sản phẩm trên mỗi máy chủ nội dung tĩnh của chúng tôi.


1

proxy_store được sử dụng để tạo gương 'theo yêu cầu' của các đối tượng. Nó đặt các mục trong cùng một đường dẫn mà mục đã cho tồn tại vào phần phụ trợ.

Trong trường hợp nội dung động chậm, proxy_cache thích hợp hơn, vì nó hỗ trợ hết hạn bộ đệm.

Một ví dụ về nơi proxy_store hữu ích hơn có thể là một bản sao của các tệp vòng / phút trong đó một tên tệp / phiên bản sẽ không bao giờ cần phải hết hạn .

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.