nginx sử dụng bộ đệm proxy nếu phụ trợ bị hỏng


11

Tôi cần nginx proxy sử dụng bộ đệm nếu máy chủ phụ trợ ngừng hoạt động:

đây là cấu hình của tôi nhưng dường như nginx sử dụng bộ đệm mà không cần kiểm tra máy chủ phụ trợ.

http {

  # ...

  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_cache_path /tmp/nginx levels=1:2 keys_zone=tmpzone:10m inactive=60m;
  proxy_cache_key "$scheme$request_method$host$request_uri";


  server {
    server_name _;

    location / {
      proxy_connect_timeout 5s;
      proxy_read_timeout 5s;
      proxy_cache tmpzone;
      proxy_cache_valid      200 304 1d;
      proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;
      proxy_set_header X-Real-IP  $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host 'www.example.com';
      proxy_pass http://www.example.com;
    }
  }
}

Câu hỏi là làm thế nào tôi có thể bỏ qua bộ đệm proxy nếu máy chủ phụ trợ lên? Và khi máy chủ phụ trợ, máy chủ proxy của tôi không sử dụng bộ đệm.


Chính xác câu hỏi là gì?
Jenny D

Câu hỏi là làm thế nào tôi có thể bỏ qua bộ đệm proxy nếu máy chủ phụ trợ lên?
sweb

Một giải pháp vượt trội có thể là có 2 "máy chủ" đang chạy, một có bộ đệm, một bộ đệm và sử dụng mô-đun ngược dòng nginx.org/en/docs/http/ngx_http_upstream_module.html ? Giải pháp tốt nhất có lẽ là có thể sử dụng proxy_cache_bypass với một kiểm tra xem phần phụ trợ có ở đó hay không ... mặc dù tôi không biết làm thế nào để làm cho ... trường hợp thú vị đó hoạt động.
SvennD

Có thể tìm thấy các
Dayo

Câu trả lời:


8

Có vẻ như một bản sao của điều này:

/programming/16756271/how-to-configure-nginx-to-serve-cached-content-only-when-backend-is-down-5xx-re

Nói tóm lại, hãy sử dụng proxy_cache_use_stale

Là một bản cập nhật, tôi đã thử nghiệm điều này và nó hoạt động tốt. Tôi đã làm bài kiểm tra trong máy trạm của mình, nơi tôi có (để hoàn thành):

Fedora 23 nginx 1.8.1 được định cấu hình là bộ kết thúc ssl + bộ đệm + proxy ngược Apache 2.4.18 được định cấu hình để nghe tại cổng 80

Với apache hoạt động như ngược dòng, chỉ phục vụ một tệp tĩnh, tôi đã thực hiện kiểm tra này:

  1. Apache lên, nginx lên, trỏ trình duyệt tới URL ủy nhiệm ngược được cung cấp bởi nginx tôi thấy nội dung được ủy quyền từ Apache. Tại thời điểm này nginx giữ điều này trên bộ nhớ cache.
  2. Ngưng apache
  3. kết nối với nginx tôi thấy tệp được lưu trong bộ nhớ cache được phân phát trước bởi Apache.

Cấu hình nginx tôi sử dụng là (chỉ những phần thú vị):

nginx.conf:

http {
[...]
location
    proxy_cache_path        /var/lib/nginx/tmp/proxy/ levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
    include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/local.conf:

upstream localhost {
    server 127.0.0.1:80;
[...]
}


server {
    listen       127.0.0.1:443 ssl;

[...]

    location /be/ {
        proxy_pass              http://localhost;
        proxy_cache             STATIC;
        proxy_cache_valid       200 1d;
        proxy_cache_use_stale   error;
}

Không làm việc gì cả hãy thử nó.
sweb

Trong trường hợp bạn nên báo cáo lỗi cho nhóm nginx. Bạn đã thử btw? Trong trường hợp tôi sẽ cố gắng tái tạo nó
Fredi

Ok, tôi đã làm một bài kiểm tra và nó hoạt động tốt. Cập nhật câu trả lời của tôi với các chi tiết kiểm tra.
Fredi

Vì vậy, việc tôi đọc câu hỏi ban đầu của sweb là, ở trạng thái của cả Apache và nginx trở lên, tất cả các yêu cầu phải được chuyển đến phần phụ trợ của Apache. Các yêu cầu chỉ nên được phục vụ từ bộ đệm NginX khi Apache bị hỏng
abhishekmukherg

@abhishekmukherg, bạn có thể làm những gì bạn nói, nhưng tại sao? Khi cả hai đều hoạt động và các tệp ở trạng thái tĩnh (nghĩ jpg / css / html) tại sao đi đến phần phụ trợ sử dụng nhiều tài nguyên mạng / cpu / ecc hơn khi bạn có một giao diện thực tế? BTW đây là một vấn đề cho một câu hỏi khác
Fredi

0

Sử dụng proxy_intercept_errors và proxy 500 cho máy chủ đã bật bộ đệm.

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.