Hướng dẫn cấu hình Basic Authentication trên Nginx

Tram Ho

Trong quá trình phát triển web, có những lúc chúng ta sẽ cần phải giới hạn người dùng truy cập đến website của mình và để giới hạn chúng ta có thể yêu cầu người dùng xác thực qua tài khoảnmật khẩu.

Bài viết này sẽ hướng dẫn cho bạn các bước để cấu hình Basic Authentication bảo vệ server Nginx chạy trên môi trường Ubuntu Server.

Yêu cầu

  1. Chuẩn bị 1 VPS Ubuntu Server
  2. Cài đặt Nginx là web server

Tạo file lưu mật khẩu

Để tạo mật khẩu, chúng ta có thể sử dụng OpenSSL.

Nếu server đã có OpenSSL thì có thể chuyển qua bước tiếp theo, còn chưa có thì chúng ta cần
cài đặt OpenSSL trước thông qua lệnh:

Tạo một file .htpasswd để lưu tài khoản và mật khẩu bên trong thư mục /etc/nginx/basic-auth. Nếu có nhiều web cùng chạy trên server này thì có thể tạo các file riêng cho từng web, ví dụ .htpasswd-web, .htpasswd-another-web.

Đầu tiên chúng ta sẽ thêm tên đăng nhập vào file .htpasswd. Ví dụ chúng ta sử dụng tên đăng nhập là username thì chạy lệnh:

Tiếp theo chúng ta cần thêm mật khẩu đã mã hóa cho tên đăng nhập username bằng lệnh:

Sau khi chạy lệnh trên, nhập mật khẩu mong muốn và xác nhận mật khẩu rồi nhấn Enter.

Xem nội dung file .htpasswd vừa tạo, chạy lệnh:

Nội dung có dạng như bên dưới nghĩa là chúng ta đã tạo thành công tài khoản và mật khẩu:

Cấu hình xác thực mật khẩu cho Nginx

Cập nhật file config nginx, trong ví dụ này mình sử dụng file default của nginx, ngoài ra mọi người có thể cập nhật vào file config tương ứng với web trên server cửa mình.

Ban đầu file /etc/nginx/sites-enabled/default có dạng như sau:

Chúng ta thêm auth_basicauth_basic_user_file trỏ đến file tên đăng nhập và mật khẩu bạn vừa mới tạo ở trên.

Lưu file config lại và restart lại server.

Sau khi khởi động lại server, truy cập vào trang web của mình, chúng ta sẽ thấy có 1 cửa sổ bật ra yêu cầu nhập tên đăng nhập và mật khẩu (giống như hình ảnh ở đầu bài viết). Nếu chúng ta điền đúng tài khoản thì sẽ được phép truy cập vào bên trong trang web. Ngược lại nếu điền sai hoặc chọn cancel thì trang web sẽ tự chuyển hướng đến trang thông báo lỗi 401 Authorization Required.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo