Bảo mật thư mục Web Server Nginx

Tác giả CCNACCNP, Tháng chín 21, 2015, 10:14:00 PM

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Bảo mật thư mục Web Server Nginx
Khi sử dụng Apache, thông thường để bảo vệ thư mục chúng ta thường sử dụng file .htaccess và .htpasswd. Tuy nhiên, Nginx lại không hỗ trợ .htaccess. Các bạn hãy xem hướng dẫn Basic HTTP Authentication bên dưới để có thể thực hiện bảo vệ thư mục trong Nginx.
Mục tiêu

Bảo vệ thư mục To view link, please Register or Login với đường dẫn server là /home/To view link, please Register or Login, file cấu hình Nginx /etc/nginx/conf.d/To view link, please Register or Login.conf

1. Tạo file Password

Đầu tiên mình sẽ cần một file để lưu trữ thông tin username/password đăng nhập (đã được mã hóa) bằng cách sử dụng script Python To view link, please Register or Login Ngoài ra, có thể sử dụng Apache's htpasswd Tool tuy nhiên phải cài thêm vào server nên mình không khuyến khích sử dụng.

Download script về /usr/local/bin và chạy

Mã nguồn [Chọn]
cd /usr/local/bin
wget [url=http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py]http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py[/url]
chmod 755 /usr/local/bin/htpasswd.py


Giờ mình sẽ tạo file password /home/To view link, please Register or Login với user vietnetwork, password vietnetwork. Lưu ý bạn có thể sử dụng file bất kỳ và lưu ở chỗ nào cũng được.

Mã nguồn [Chọn]
htpasswd.py -c -b /home/example.com/public_html/.htpasswd vietnetwork vietnetwork

Tham số -c để thực hiện tạo mới file nếu chưa có, nếu file đã tồn tại thì sẽ overwrite do đó mất hết các user từ trước. Trong trường hợp bạn muốn add thêm user nữa thì bỏ tham số -c đi:

Mã nguồn [Chọn]
htpasswd.py -b /home/example.com/public_html/.htpasswd vietnetwork2 vietnetwork2

2. Cấu hình Nginx

Mở file cấu hình Nginx

Mã nguồn [Chọn]
nano /etc/nginx/conf.d/example.com.conf

Thêm nội dung như sau vào trong server { ... }

Mã nguồn [Chọn]
server {
       listen 80;
[...]
       location ^~ /test {
                auth_basic "Restricted";
                auth_basic_user_file /home/example.com/public_html/.htpasswd;
       }
[...]
}


Reload Nginx

Mã nguồn [Chọn]
/etc/init.d/nginx reload

Giờ khi truy cập vào To view link, please Register or Login sẽ có thông báo yêu cầu đăng nhập hiện ra:
Nếu bạn không đăng nhập hoặc đăng nhập sai sẽ báo lỗi: