Một số thiết lập Rules cho Nginx không thể bỏ qua

nginx-rules

Khi sử dụng Nginx, để rewrite url hoặc redirect bạn cần thiết đặt thông qua các rules. Các rules này sẽ được thiết lập trong tệp tin cấu hình tương ứng với website mà bạn muốn thiết lập.

Bài viết này mình sẽ hướng dẫn các bạn thiết lập một số các rules cơ bản do mình tự sưu tầm và vẫn đang sử dụng hàng ngày.

1. Thiết lập chỉ thị “proxy_pass” phụ thuộc vào dấu gạch chéo (“/”)

Trường hợp 1: có dấu “/”

location /some_dir/ { 
    proxy_pass http://some_server/; 
}

Trường hợp 2: không có dấu “/”

location /some_dir/ { 
    proxy_pass http://some_server; 
}

Với trường hợp 1, một yêu cầu đến http://your_server/some_dir/some_subdir/some_file sẽ được pass tới http://some_server/some_subdir/some_file. Nghĩa là lúc này , /some_dir/ sẽ được thay thế bởi / và đường dẫn yêu cầu sẽ được thay đổi từ /some_dir/some_subdir/some_file sang /some_subdir/some_file.

Với trường hợp 2, một yêu cầu cũng như trên nhưng sẽ được pass tới http://some_server/some_dir/some_subdir/some_file. Nghĩa là đường dẫn gốc ban đầu được giữ nguyên.

=> Hai trường hợp này có thể được áp dụng trong trường hợp bạn muốn khi người dùng truy xuất qua một thư mục thì sẽ proxy_pass sang một đường link khác có thể đặt cùng hoặc khác máy chủ với đường link gốc truy cập.

2. Thiết lập redirect domain hiện tại sang domain khác 

Redirect http://domain1.com và toàn bộ đường dẫn thuộc về domain này sang domain mới http://domain2.com

rewrite ^(.*) http://domain2.com$1 permanent;

3. Thiết lập redirect từ www.domain.com sang domain.com và ngược lại

– Chuyển từ www.domain.com sang domain.com kèm theo cả đường dẫn và tham số của url

server { 
   server_name www.domain.com; 
   rewrite ^(.*) $scheme://domain.com$1 permanent; 
}

– Chuyển từ domain.com sang www.domain.com kèm theo cả đường dẫn và tham số của url

server { 
    server_name domain.com; 
    rewrite ^(.*) $scheme://www.domain.com$1 permanent; 
}

4. Thiết lập rewrite đường dẫn cho website chạy wordpress trên nginx

Bạn muốn thiết lập đường dẫn kiểu như http://domain.com/bai-viet/xin-chao-moi-nguoi trên cho website wordpress khi chạy qua Nginx thì bạn cần thêm vào cấu hình dưới đây

if (!-e $request_filename) { 
   rewrite ^.*$ /index.php last; 
}

5. Thiết lập rules dựa theo url 

location ~* /(admin|author)$ { 
    try_files $uri $uri/ @something; 
}

Cấu hình trên đây sẽ kiểm tra khi người dùng truy cập url có đường dẫn http://domain.com/admin hoặc http://domain.com/author thì sẽ thực hiện các lệnh được khai báo.

6. Thiết lập Nginx để redirect từ HTTP sang HTTPS

HTTPS đã là giao thức khá phổ biến và được sử dụng rất nhiều trên các website, và nếu như bạn đang sử dụng HTTP trên máy chủ Nginx thì việc chuyển sang HTTPS cũng không quá phức tạp. Các bạn cần mở file cấu hình Nginx dành cho website các bạn đang chạy và thêm rules sau:

server { 
  listen 80; 
  server_name your_domain.com; 
  return 301 https://$server_name$request_uri; 
}

Trong đó your_domain.com là tên miền cho website của các bạn. Với cấu hình trên khi có bất cứ request nào truy cập vào website của các bạn qua HTTP thì sẽ được chuyển qua HTTPS và khi đó Nginx sẽ điều hướng việc truy cập website theo cấu hình HTTPS.

Cuối cùng, Bạn cần khởi động lại Nginx để có hiệu lực

service nginx restart

7. Đặt mật khẩu truy cập vào thư mục trong Nginx

Giả sử bạn đang sử dụng Nginx trên máy chủ web server và bạn có một website đang chạy ở địa chỉ: http://domain.com. Bây giờ bạn muốn khi người dùng truy cập vào thư mục /test thông qua địa chỉ http//domain.com/test thì sẽ phải xác thực bằng cách điền vào username/password do bạn tạo ra.

Để thực hiện việc này, bạn cần làm các bước như sau:

  • Cài đặt Apache Tools
  • Tạo ra tài khoản xác thực
  • Cập nhật cấu hình trong Nginx

7.1. Cài đặt Apache Tools.

Bạn cần cài đặt gói apache2-utils được dùng để tạo ra tài khoản xác thực trong nginx. Trên command line, chạy câu lệnh sau để cài đặt:

sudo apt-get install apache2-utils

7.2. Tạo ra tài khoản xác thực

Bạn sẽ tạo ra mật khẩu kết hợp với username mà bạn chỉ định và sau cùng được lưu trong một file. Chạy câu lệnh sau để tạo ra mật khẩu, khi đó bạn sẽ được yêu cầu nhập vào mật khẩu cho tài khoản:

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

Trong đó:

– admin là username bạn muốn đặt
– /etc/nginx/.htpasswd là file lưu trữ mật khẩu

Sau khi hoàn thành, bạn có thể xem lại nội dung của file lưu tài khoản bách cách gõ lệnh:

cat /etc/nginx/.htpasswd

7.3. Cập nhật cấu hình trong Nginx

Bây giờ, bạn cần cập nhật cấu hình trong Nginx để yêu cầu xác thực qua mật khẩu, bạn hãy mở file cấu hình Nginx cho website của bạn và cập nhật nội dung như sau:

location / { 
   .... 
   auth_basic "Private Property"; 
   auth_basic_user_file /etc/nginx/.htpasswd; 
}

Sau khi thêm vào cấu hình 2 dòng như trên, bạn lưu lại và khởi động lại Nginx để cấu hình được kích hoạt:

sudo service nginx reload

Ngay bây giờ, khi bạn truy cập vào đường dẫn website, bạn sẽ được yêu cầu nhập vào tài khoản xác thực. Nếu bạn nhập đúng username và password, bạn sẽ truy cập được.

Chúc các bạn thành công.

Đánh giá bài viết

About The Author

Scroll to Top