Trong quá trình phát triển phần mềm, nhiều khi bạn muốn chia sẻ máy chủ localhost của mình với đồng nghiệp, test ứng dụng trên nhiều thiết bị khác nhau hay demo cho khách hàng. Nhưng việc cấu hình máy chủ và mở port để truy cập qua internet thường khá phức tạp (Reverse SSH Tunneling).
Với Ngrok, bạn có thể nhanh chóng tạo một đường dẫn qua internet, cho phép người khác truy cập trực tiếp vào localhost của máy tính mà không cần cấu hình phức tạp chỉ trong vòng vài phút. Vậy Ngrok là gì, hoạt động như thế nào, và làm sao để sử dụng nó? Hãy cùng tìm hiểu chi tiết trong bài viết này.
1. Ngrok là gì?
Ngrok hoạt động như một reverse proxy giúp tạo ra các đường hầm bảo mật (secure tunnel) từ internet đến localhost của bạn.
Về cơ bản, nó cung cấp một URL công khai (public URL) tạm thời, giúp bạn chia sẻ nhanh chóng và dễ dàng ứng dụng đang chạy trên máy tính cá nhân của mình với bất kỳ ai, ở bất kỳ đâu.
Mình thường sử dụng Ngrok để nhận webhook từ các dịch vụ bên thứ ba như Github, PayPal, hoặc TikTok trong giai đoạn phát triển, vì nó giúp tiết kiệm rất nhiều thời gian thay vì phải cấu hình mạng và mở cổng thủ công.
Ngoài ra, mình cũng dùng Ngrok để chia sẻ ứng dụng cục bộ với đồng nghiệp hoặc khách hàng, đặc biệt khi cần trình diễn nhanh mà không cần triển khai lên server.
Tuy nhiên, mình không dùng Ngrok trong môi trường production vì URL miễn phí là tạm thời và không đảm bảo tính bảo mật hoặc hiệu suất lâu dài. Nếu cần tính ổn định, mình sẽ triển khai ứng dụng lên server thực tế như AWS, Google Cloud.
2. Ngrok hoạt động như thế nào?
Hãy hình dung bạn đang phát triển một ứng dụng sử dụng OAuth2 từ TikTok để nhận access_token ủy quyền từ người bán (seller) hay còn gọi là Callback URL.
Thay vì triển khai ứng dụng lên server chỉ để kiểm tra tính năng này, bạn chỉ cần chạy Ngrok. Chỉ trong vòng chưa đầy 30 giây, bạn sẽ có ngay một public URL mà TikTok có thể gửi dữ liệu phản hồi đến, giúp bạn nhận được access_token.
Ngrok không chỉ tiết kiệm thời gian mà còn giúp bạn tập trung vào việc phát triển tính năng, thay vì phải mất công cấu hình mạng.
Vậy, Ngrok thực sự hoạt động như thế nào? Khi bạn chạy Ngrok, công cụ này sẽ:
- Khởi tạo một đường hầm (tunnel): Ngrok mở một kết nối bảo mật giữa localhost của bạn và một máy chủ trung gian trên internet.
- Cung cấp URL công khai: URL này được ánh xạ đến ứng dụng cục bộ của bạn, cho phép bất kỳ ai có URL này truy cập vào dịch vụ bạn đang chạy.
- Chuyển tiếp dữ liệu: Khi một yêu cầu được gửi đến URL công khai, Ngrok sẽ chuyển tiếp nó đến máy chủ cục bộ của bạn và gửi phản hồi ngược lại.
- Ghi nhật ký: Mọi yêu cầu và phản hồi đều được ghi lại trong bảng điều khiển của Ngrok để bạn dễ dàng theo dõi và debug.
3. Hướng dẫn sử dụng Ngrok với Python (Flask)
Hãy cùng thử thiết lập một ứng dụng Flask đơn giản và chia sẻ nó với Ngrok.
- Bước 1: Đầu tiên, cài đặt Flask và pyngrok bằng lệnh
pip install flask pyngrok
- Bước 2: Tạo file
app.py
với nội dung
from flask import Flask
from pyngrok import ngrok
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Ngrok!"
if __name__ == "__main__":
public_url = ngrok.connect(5000)
print(f"Ngrok URL: {public_url}")
app.run(port=5000)
- Bước 3: Khởi chạy Flask bằng lệnh
python app.py
Ngrok sẽ cung cấp một URL tạm thời, ví dụ: https://abc123.ngrok.io
. Bạn có thể truy cập URL này từ bất kỳ thiết bị nào, bạn có.
4. Kết luận
Ngrok là một công cụ mạnh mẽ và tiện lợi, giúp các nhà phát triển dễ dàng kết nối localhost với internet chỉ trong vài bước đơn giản. Hy vọng bài viết trên của mình đã cho bạn cái nhìn tổng quan về Ngrok, khi nào nên và không nên dùng nó.
Các bài viết liên quan:
Bài viết liên quan
Tìm hiểu Sentry: Công cụ Theo dõi Lỗi và Hiệu suất tự động
Dec 16, 2024 • 7 min read
Tìm hiểu toàn diện về Index trong MySQL và PostgreSQL
Dec 14, 2024 • 12 min read
Keycloak là gì? Hướng dẫn tích hợp Keycloak với Spring Boot
Dec 09, 2024 • 7 min read
Cách Discord Lưu Trữ Hàng Nghìn Tỷ Tin Nhắn Với ScyllaDB
Dec 06, 2024 • 9 min read
Idempotent Consumer: Xử lý thông điệp trùng lặp trong Microservices
Dec 04, 2024 • 7 min read
Hướng dẫn tích hợp Redux và React Query trong dự án React Vite
Nov 22, 2024 • 8 min read