Tạo xác thực mật khẩu bằng Nginx

2020/10/13 06:02:27

Giới thiệu

Khi bạn cài đặt một web server, một số mục bạn muốn giới hạn người dùng truy cập vào đó. Thông thường, bạn sẽ cần phải sử dụng web động, rồi làm trang đăng nhập, đăng xuất, quản lý người dùng, bla, bla... rất phức tạp và tốn thời gian. Nếu hệ thống của bạn chỉ cần tính năng giới hạn cho một số người truy cập vô đơn giản thì giải pháp chính là sử dụng cơ chế xác thực người dùng do chính web server hỗ trợ. Ở đây ta sẽ bàn đến web server Nginx.

Bài viết sẽ mặc định là bạn đã cài đủ mọi công cụ trên hệ điều hành của mình.

Tạo file chứa mật khẩu

Bằng OpenSSL

Thêm tên người dùng sammy

sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"

Thêm mật khẩu được mã hóa

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

Xem kết quả

cat /etc/nginx/.htpasswd

Ta thu được

sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Bằng Apache Utilities

sudo htpasswd -c /etc/nginx/.htpasswd sammy

Bỏ tùy chọn -c để thêm người dùng khác

sudo htpasswd /etc/nginx/.htpasswd another_user

Cấu hình Nginx

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  root /usr/share/nginx/html;
  index index.html index.htm;

  server_name localhost;

  location / {
    try_files $uri $uri/ =404;

    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }
}

Khởi động lại Nginx

sudo service nginx restart

Bởi: Justin Ellingwood

Dịch: Anh Hao

Cảm ơn các bạn đã theo dõi.

Quay lại trang chủ