Triển khai trang WordPress không cần mở port với Cloudflare Tunnel

Thông thường, các trang web nói chung hoặc WordPress nói riêng sẽ được chạy trên những máy chủ web và các quản trị viên sẽ phải mở cổng (port) trên server, sau đó trỏ tên miền về IP của máy chủ để người dùng có thể truy cập vào. Cụ thể, đối với HTTP thì thường phải mở port 80 còn HTTPS thì mở port 443 trên máy chủ. Tuy nhiên, cách này thường tiềm ẩn một rủi ro nhất định vì hacker vẫn có thể tận dụng các lỗ hỏng bảo mật của máy chủ để tấn công thông qua các cổng đã được mở này.

Để giải quyết vấn đề này, Cloudflare đã cho ra mắt dịch vụ Cloudflare Tunnel (tạm dịch là đường hầm Cloufdlare) nhằm giúp các quản trị viên không cần phải mở port trên máy chủ mà vẫn cho phép người dùng truy cập vào trang web một cách an toàn. Không những bạn không cần mở port nữa mà ngay cả việc trỏ tên miền về server, hay việc phải đăng ký chứng chỉ bảo mật SSL cho trang web của mình cũng không cần thiết nữa. Tất cả đều đã được Cloudflare lo.

Cách hoạt động của nó rất đơn giản, bạn chỉ cần chạy một phần mềm của Cloudflare trên cùng máy chủ đang chạy web, lúc này Cloudflare sẽ tạo ra một đường hầm bằng VPN từ máy chủ của bạn đến máy chủ của Cloudflare, và sẽ kết nối người dùng với máy chủ của bạn thông qua đường hầm này.

Phần sau đây là mình ghi chép lại cách mình đã thử triển khai trang WordPress không cần mở port với tên miền ‘test.workleast.com’ của mình bằng Cloudflare Tunnel.

Lưu ý: Bài này mình giả định bạn đã có sẵn trang WordPress đang hoạt động. Nếu bạn chưa có thì có thể tham khảo thêm bài này để xây dựng và cấu hình trang WordPress cho riêng mình.

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

Để có thể thực hiện các bước bên dưới, yêu cầu bạn phải thỏa điều kiện sau:

2. Cấu hình Cloudflare tunnel

  • Nhấn vào ‘Create a tunnel’ để tiếp tục
  • Chọn “Cloudflare” ở phần “Select your connector” sau đó nhấn “Next”
  • Lúc này Cloudflare sẽ yêu cầu bạn đặt tên cho tunnel, ở đây mình tạm đặt tên là ‘test’. Sau đó nhấn nút ‘Save tunnel’ để tiếp tục.
  • Bước này yêu cầu chọn hệ điều hành bạn đang sử dụng cho máy chủ web. Vì mình đang xài Ubuntu nên sẽ chọn Debian từ menu. Lúc này bên dưới sẽ xuất hiện các dòng lệnh để bạn cài đặt phần mềm Cloudflare lên máy chủ của mình. Bạn chỉ việc copy tất cả các dòng lệnh bên ô bên trái và tiếp tục thực hiện trên máy chủ.
  • Sau khi kết nối vào máy chủ bằng web console hoặc SSH, bạn dán (paste) các lệnh này ra và chạy.
  • Sau khi các lệnh được thực hiện thành công sẽ có thông báo như sau:
  • Lúc này bạn quay trở lại trang Cloudflare Zero Trust để tiếp tục cấu hình. Bạn kéo xuống phía dưới cùng sẽ thấy bảng sau:
  • Trong phần Connectors lúc này nếu báo ‘Connected’ tức máy chủ của bạn đã kết nối đến Cloudflare thành công. Bạn nhấn nút ‘Next’ để tiếp tục.
  • Bước này bạn khai báo tên miền muốn kết nối với tunnel này. Nếu bạn không sử dụng tên miền phụ (subdomain) thì có thể bỏ trống và điền tên miền vào.
  • Phần ‘Service’ bên dưới bạn chọn ‘HTTP’ và điền vào mục URL là ‘localhost’ (hoặc bất kỳ địa chỉ IP nào máy chủ web của bạn đang sử dụng) vì lúc này Cloudflare đang chạy trên máy chủ của bạn nên có quyền truy cập vào tất cả các IP nội bộ (internal IP) và công khai (public IP) của máy chủ.
  • Ở bước này mình chỉ khai báo HTTP chứ không dùng HTTPS ở đây vì đây là kết nối nội bộ giữa Cloudflare và máy chủ nên không cần sử dụng chứng chỉ bảo mật SSL. Tuy nhiên sau khi kết nối thành công thì bạn vẫn có thể vào trang web của mình bằng tên miền với giao thức HTTPS như bình thường, do Cloudflare đã sử dụng chứng chỉ bảo mật ‘Edge Certificates’ khi kết nối với người dùng.
  • Trong trường hợp bạn muốn sử dụng giao thức HTTPS để tăng cường bảo mật khi kết nối với Cloudflare thì vẫn phải đăng ký chứng chỉ SSL cho tên miền với Let’s Encrypt bằng Acme hay Certbot rồi cấu hình máy chủ web chấp nhận chứng chỉ này thì mới có thể sử dụng được. Ngoài ra bạn cũng cần điền thêm tên miền của mình vào phần ‘TLS’, mục ‘Origin Server Name’ như sau:
  • Sau khi khai báo xong bạn nhấn nút ‘Save’ bên dưới để hoàn thành.
  • Sau khi cấu hình thành công nếu bạn thấy phần trang thái (Status) của tunnel báo là ‘HEALTHY’ tức là tên miền của bạn đã có thể sử dụng để vào trang web.
  • Lúc này bạn mở trình duyệt và gõ ‘https://test.workleast.com’ là sẽ vào được trang WordPress như bình thường.

Chúc bạn thành công!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *