Computer >> Máy Tính >  >> Lập trình >> Redis

Triển khai danh sách cho phép / từ chối IP ở Edge với Cloudflare worker và Upstash Redis

Thông thường, nhu cầu hạn chế quyền truy cập vào trang web của bạn đối với một số IP cụ thể, trong bài đăng này, tôi sẽ hướng dẫn cách triển khai danh sách Cho phép / Từ chối IP bằng cách sử dụng điện toán Edge. Trước tiên, hãy để tôi giới thiệu về Cloudflare worker.

Nhân viên Cloudflare

Cloudflare worker là công nghệ khá phổ biến trong những năm gần đây. Nó được cung cấp công khai vào năm 2017 và lưu trữ iCloudflare KV được cung cấp công khai vào năm 2019.

Không đi sâu vào chi tiết của Cloudflare worker hoặc KV lưu trữ, tôi sẽ giải thích ngắn gọn về chúng. để đặt / lấy từ điển có sẵn bên trong Cloudflare worker.Bạn có thể nhanh chóng thử môi trường sân chơi, môi trường kiểm tra khá đơn giản và chỉ với 1 cú nhấp chuột.

Ngoài Cloudflare KV Storage, với tư cách là nhà phát triển, bạn có thể cần các cấu trúc dữ liệu nâng cao hơn. Ngoài ra, bạn có thể muốn truy cập bộ nhớ KV từ bên ngoài (như từ chương trình phụ trợ hoặc ứng dụng khách API hoặc SDK). Vì vậy, gần đây chúng tôi đã kích hoạt REST Api Upstash.

Giờ đây, bạn có thể truy cập cơ sở dữ liệu Upstash Redis của mình bằng cách sử dụng:

  • Upstash Rest API trong Cloudflare worker
  • redis-cli trong đầu cuối dòng lệnh của bạn
  • Bất kỳ ứng dụng khách redis nào bằng ngôn ngữ lập trình cụ thể đó

Vui lòng nhấp vào connect của bạn trong trang chi tiết cơ sở dữ liệu của bạn để biết một số đoạn mã mẫu và lệnh mẫu.

Triển khai danh sách cho phép / từ chối IP ở Edge với Cloudflare worker và Upstash Redis

Hãy tạo một ứng dụng nhỏ bằng cách sử dụng Cloudflare worker và cùng nhau khám phá Upstash Redis Rest API.

Ứng dụng

IP Cho phép / Từ chối trong nhân viên Cloudflare sử dụng Redis làm nguồn xác thực.

Điều kiện tiên quyết

  • Cơ sở dữ liệu Redis không có máy chủ (Bạn có thể tạo một cơ sở dữ liệu từ Upstash Console)
  • Tài khoản Cloudflare hoặc bạn có thể sử dụng CF Playground
  • Kiến thức javascript cơ bản
  • Kiến thức cơ bản về nhân viên Cloudflare

:::note Chọn Cơ sở dữ liệu toàn cầu trong khi tạo cơ sở dữ liệu Upstash. Cơ sở dữ liệu toàn cầu sao chép dữ liệu sang nhiều vùng để giảm độ trễ từ các hàm biên. :::

Hãy Tạo một nhân viên Cloudflare và chặn yêu cầu. Khi bạn tạo một worker, nó sẽ tự động đi kèm với mã mẫu.

Triển khai

Hãy lấy địa chỉ IP của khách truy cập:

async function handleRequest(request) {
  const ip = request.headers.get("cf-connecting-ip");
  return new Response(ip);
}

Có thể lấy địa chỉ IP của khách truy cập từ tiêu đề. Bây giờ chúng ta muốn kiểm tra xem địa chỉ IP này có nằm trong danh sách được phép hay không. Hãy thực hiện một lệnh gọi API REST duy nhất và cải thiện mã của chúng tôi.

async function handleRequest(request) {
  const ip = request.headers.get("cf-connecting-ip");
  res = await fetch(
    "https://YOUR_DATABASE_ENDPOINT/sismember/allowed-set/" +
      ip +
      "?_token=YOUR_REST_API_TOKEN"
  );
  if ((await res.text()).includes("1")) {
    return new Response(ip + " is allowed.");
  }
  return new Response(ip + " is not allowed.");
}

Bây giờ chúng tôi thực hiện một cuộc gọi api còn lại đến Máy chủ Upstash Redis của chúng tôi và kiểm tra xem địa chỉ IP có trong danh sách hay không. Nếu kết quả chứa "1" thì có nghĩa là nó có trong danh sách, ngược lại thì không.

Bạn có thể cập nhật bộ Redis bằng redis-cli bằng lệnh sau:

sadd allowed-set $IP_ADDRESS

Kết luận và Công việc trong tương lai

Giờ đây, bạn có thể truy cập phiên bản máy chủ Redis của mình bằng cách sử dụng Rest api. Chúng tôi đang hỗ trợ hầu hết các lệnh sử dụng Rest api. Vui lòng xem tài liệu của chúng tôi để biết thêm chi tiết. cli. Ngoài ra trong Upstash, bạn có thể truy cập cơ sở dữ liệu Redis của mình bằng API REST.

Ứng dụng đơn giản này có thể được mở rộng thành một loại nhân viên bảo vệ trong Cloudflare worker. Người dùng có thể thay đổi các giá trị cấu hình trong cơ sở dữ liệu Redis và Cloudflare Worker có thể đọc cấu hình từ Redis.