NỘI DUNG
Trong quá trình quản lý website, có nhiều bot tự động truy cập và thu thập dữ liệu từ trang web của bạn. Một số bot có ích như Googlebot hay Bingbot, nhưng cũng có nhiều bot độc hại hoặc không cần thiết gây tốn tài nguyên server, làm chậm website và ảnh hưởng đến hiệu suất.

Nếu bạn đang sử dụng NGINX hoặc Apache (với file .htaccess), bạn có thể cấu hình để chặn các bot dựa trên User-Agent – một chuỗi thông tin mà bot gửi đến máy chủ khi truy cập. Bài viết này sẽ hướng dẫn từng bước cách áp dụng cấu hình chặn bot trên cả hai hệ thống. Đặc biệt với NGINX – vốn hơi “khó nhằn” với người mới – tôi sẽ giải thích chi tiết để bạn dễ hình dung. Bạn chỉ cần làm theo, không cần phải là chuyên gia!
Dưới đây là hai đoạn mã tôi sẽ sử dụng làm ví dụ:
- NGINX: Chặn bot bằng cách trả về mã lỗi 444 (kết nối bị đóng ngay lập tức).
- .htaccess: Chặn bot bằng cách trả về lỗi 403 (Forbidden – bị cấm).
1. Chặn bot trên NGINX
NGINX là một web server mạnh mẽ, nhưng cách cấu hình của nó có thể làm bạn bối rối nếu mới tiếp cận. Đừng lo, tôi sẽ giải thích từng bước để bạn hiểu rõ.
Bước 1: Hiểu đoạn mã chặn bot
Dưới đây là đoạn mã chặn bot trên NGINX:
if ($http_user_agent ~ (Bytespider|Amazonbot|DotBot|my-tiny-bot|python-requests|curl/7.68.0|curl/7.54.1|ClaudeBot|Go-http-client/2.0|ZoominfoBot|SemrushBot/7~bl|ByteLocale|YandexBot/3.0) ) {
return 444;
}
- $http_user_agent: Đây là biến trong NGINX, đại diện cho User-Agent mà trình duyệt hoặc bot gửi đến.
- ~: Ký hiệu này có nghĩa là so khớp theo biểu thức chính quy (regex). Nó kiểm tra xem User-Agent có chứa bất kỳ chuỗi nào trong danh sách không.
- Danh sách bot: Đây là tên các bot mà bạn muốn chặn, ví dụ như Amazonbot, Bytespider, YandexBot, v.v.
- return 444: Khi bot bị phát hiện, NGINX sẽ trả về mã 444 – một mã đặc biệt để đóng kết nối ngay lập tức mà không gửi bất kỳ phản hồi nào thay vì sử dụng 403
Bước 2: Thêm cấu hình vào file NGINX
Bạn cần đặt đoạn mã này vào đúng vị trí trong file cấu hình NGINX. Thông thường, nó nằm trong file virtual host (vhost) của website.
2. Tìm file vhost: File này thường nằm trong /etc/nginx/sites-available/
. Ví dụ: /etc/nginx/sites-available/yourdomain.com
.
2. Mở file bằng lệnh sau
vi /etc/nginx/sites-available/yourdomain.com
3. Tìm khối server: Đây là nơi cấu hình cho website của bạn. Nó trông như thế này:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
...
}
4. Thêm đoạn mã chặn bot: Đặt đoạn mã vào trong khối server, trước các quy tắc xử lý request khác (ví dụ: trước location /). Sau khi thêm, nó sẽ trông như sau:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
if ($http_user_agent ~ (Bytespider|Amazonbot|DotBot|my-tiny-bot|python requests|curl/7.68.0|curl/7.54.1|ClaudeBot|Go-http-client/2.0|ZoominfoBot|SemrushBot/7~bl|ByteLocale|YandexBot/3.0) ) {
return 444;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
...
}
Bước 3: Kiểm tra và áp dụng cấu hình
Kiểm tra cú pháp có bị sai sót không
nginx -t
Nếu không có lỗi, bạn sẽ thấy thông báo “syntax is ok” và “test is successful”.
Tải lại NGINX để áp dụng:
systemctl reload nginx
Lưu ý:
- Sao lưu lại file cấu hình trước khi thực hiện thay đổi
- Nếu bạn muốn chặn thêm bot khác, chỉ cần thêm tên bot vào danh sách, cách nhau bằng dấu |. Ví dụ: |GPTBot/1.2.
- Hiện các ControlPanel và Kịch bản script có đường dẫn vhost lưu vị trí khác nhau. Nên bạn cần tìm đúng vị trí
2. Chặn bot trên .htaccess (Apache, OpenLiteSpeed, LiteSpeed)
Nếu bạn dùng Apache, việc chặn bot đơn giản hơn nhiều nhờ file .htaccess.
Bước 1: Hiểu đoạn mã
Đây là đoạn mã chặn bot trong .htaccess:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Bytespider|Amazonbot/0.1|MJ12bot/v1.4.8|MJ12bot/v1.4.4|SemrushBot/6~bl|SemrushBot/7~bl" [NC]
RewriteRule .* - [F,L]
- RewriteEngine On: Bật tính năng rewrite của Apache.
- RewriteCond: Điều kiện kiểm tra User-Agent. Nếu khớp với danh sách bot, điều kiện sẽ đúng.
- [NC]: Không phân biệt chữ hoa/thường (No Case).
- RewriteRule: Nếu điều kiện đúng, trả về mã [F] (Forbidden – lỗi 403) và [L] (dừng xử lý tiếp).
Bước 2: Thêm mã vào .htaccess
Nếu bạn dùng hosting có sẵn giao diện thì có thể mở trực tiếp bằng cách click trực tiếp file và edit
1. Tìm file .htaccess: File này thường nằm trong thư mục gốc của website (ví dụ: /var/www/yourdomain.com/.htaccess).
2. Mở file:
vi /var/www/yourdomain.com/.htaccess
3. Dán đoạn mã: Thêm đoạn mã vào đầu file hoặc bất kỳ đâu, miễn là không nằm trong khối điều kiện khác.
Lưu và thoát: Nhấn Ctrl + O, Enter, rồi Ctrl + X.

Bước 3: Kiểm tra
Không cần restart Apache vì .htaccess được áp dụng ngay lập tức. Bạn chỉ cần truy cập website để kiểm tra xem bot có bị chặn không (cách kiểm tra sẽ được đề cập ở phần sau).
Lưu ý:
- Thêm bot mới bằng cách bổ sung tên bot vào danh sách, cách nhau bằng
|
.
3. Cách kiểm tra bot đã bị chặn chưa
Dùng lệnh curl để giả lập bot:
curl -A "SemrushBot" http://yourdomain.com
Nếu thấy phản hồi trống (NGINX 444) hoặc lỗi 403 (.htaccess), bạn đã thành công!
Xem log truy cập:
- NGINX: /var/log/nginx/access.log
- Apache: /var/log/apache2/access.log
Chặn bot không chỉ giúp tiết kiệm tài nguyên mà còn bảo vệ website của bạn khỏi những truy cập không mong muốn. Với NGINX, bạn có thể dễ dàng thêm đoạn mã vào file vhost và tận dụng mã 444 để “âm thầm” xử lý bot. Trong khi đó, .htaccess trên Apache lại đơn giản và trực quan hơn cho người mới. Hy vọng bài hướng dẫn này đã giúp bạn hiểu rõ và áp dụng thành công. Nếu có thắc mắc, cứ thử hỏi – tôi luôn sẵn sàng hỗ trợ!