Hướng dẫn cấu hình Basic Authentication trên Nginx
Khi cài đặt một web server, sẽ có những tình huống đặc biệt khi mà bạn muốn giới hạn việc truy cập của người dùng. Có thể bạn không biết, web server bản thân cũng có cách xác thực người dùng bằng username và password.
Bài viết này sẽ chỉ cho bạn từng bước để cài mật khẩu bảo vệ server Nginx chạy trên môi trường Ubuntu.
Điều kiện:
- Bạn cần quyền truy cập vào môi trường server Ubuntu.
- Sử dụng Nginx làm web server
sudo apt-get update
sudo apt-get install nginx
Tạo file để lưu mật khẩu
Tôi sử dụng OpenSSL để tạo mật khẩu (nếu server của bạn không có hãy cài nó lên).
Tôi tạo một file .htpasswd
để lưu tên đăng nhập và mật khẩu bên trong thư mục /etc/nginx
. Nếu bạn 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
.
Bạn hãy chạy câu lệnh sau. Xin chú ý rằng bạn có thể thay thế haposoft
bằng bất cứ tên đăng nhập nào và thay thế tên file .htpasswd
bằng file mà bạn muốn.
sudo sh -c "echo -n 'haposoft:' >> /etc/nginx/.htpasswd"
Thêm mật khẩu đã được mã hoá cho tên đăng nhập haposoft
bằng lệnh sau
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
Điền mật khẩu bạn mong muốn và xác nhận mật khẩu rồi nhấn Enter.
Xem nội file vừa tạo
cat /etc/nginx/.htpasswd
Nội dung có dạng như sau nghĩa là bạn tạo thành công
haposoft:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
Cấu hình xác thực mật khẩu Nginx
Sửa file cấu hình trang web của bạn bằng lệnh sau. Trong đó bạn thay default thành file config trong server của bạn
sudo nano /etc/nginx/sites-enabled/default
Bên trong có dạng như sau
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;
}
}
Hãy thêm auth_basic
và auth_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.
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;
}
}
Lưu file cấu hình lại và khởi động lại server.
sudo service nginx restart
Truy cập trang web của bạn sẽ có một cửa sổ bật ra yêu cầu bạn điền tên đăng nhập và mật khẩu (giống như ảnh gif ở đầu bài). Nếu bạn điền chính xác bạn sẽ được phép truy cập nội dung bên trong trang web.
Nếu bạn điền sai hoặc ấn Cancel
trang lỗi 401 Authorization Required sẽ hiện ra.