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

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ản và mậ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 CentOS và Ubuntu Server.

1. Cài đặt htpasswd

Tiến hành cài gói apache2-utils (Debian, Ubuntu) hoặc httpd-tools (CentOS)

Ubuntu, Debian:

sudo apt-get update 
sudo apt-get install apache2-utils 

CentOS:

sudo yum install httpd-tools 

2. Tạo Password File

Sau khi htpasswd được cài đặt, hãy tạo file mật khẩu bằng câu lệnh sau với flag -c nếu file “.htpasswd” chưa tồn tại:

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

Thay thế “username” với tên đăng nhập bạn mong muốn. Sẽ có prompt chờ bạn nhập thông tin cho user trên

Lưu ý: nếu đã có file  /etc/nginx/.htpasswd rồi thì KHÔNG sử dụng flag -c

sudo htpasswd /etc/nginx/.htpasswd tomosia-admin

Nếu user tomosia-admin đã tồn tại thì lệnh trên sẽ cập nhật lại password

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

Mở tệp cấu hình nginx của bạn, thường nó sẽ nằm ở đường dẫn /etc/nginx/nginx.conf hoặc cấu hình cho 1 site nhất định tại /etc/nginx/sites-available/example.com hoặc /etc/nginx/conf.d/example.com. Sau đó thêm dòng sau vào file cấu hình

auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;

Nếu muốn thiết lập basic auth cho toàn bộ website trên server thì cần thêm vào khối http

http {
   ...
   auth_basic "Restricted Access!"; 
   auth_basic_user_file /etc/nginx/.htpasswd;
   ...
}

Nếu muốn thiết lập cho một website hoặc domain nhất định cần thêm vào khối server tương ứng

server {
    ...
    auth_basic "Restricted Access!";
    auth_basic_user_file /etc/nginx/.htpasswd;
    ...
}

Nếu muốn thiết lập cho một location nhất định hãy thêm vào khối location

location /swagger-ui/ {
    ...
    auth_basic "Restricted Access!";
    auth_basic_user_file /etc/nginx/.htpasswd;
    ...
}

4. Restart Nginx

sudo service nginx reload #debian/ubuntu
sudo systemctl restart nginx #redhat/centos

5. Kiểm tra

0 Shares:
8 comments
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like