Vì sao Nginx không hỗ trợ .htaccess? Đây có thể là câu hỏi phổ biến nhất cho những ai đang sử dụng Apache làm máy chủ web (Web Server) và có ý định di chuyển đến máy chủ web Nginx. Hôm nay tôi giúp bạn giải đáp lý do vì sao mà Nginx thời điểm hiện tại không hỗ trợ và chắc chắn trong tương lai sẽ không có khái niệm .htaccess trong Nginx.
Trước hết ta hãy tìm hiểu file .htaccess hoạt động như thế nào trên Apache? Mỗi khi Apache xử lý một yêu cầu, đầu tiên nó kiểm tra và xử lý bất kỳ tập tin .htaccess trong cùng thư mục với tập tin nó đang phục vụ. Điều này là hoàn toàn bình thường, tuy nhiên Apache còn đi sâu vào tất cả các thư mục con của một thư mục hiện tại, và trong mỗi thư mục, nó tiếp tục sẽ kiểm tra và xử lý file .htaccess trong tất cả các thư mục đó. Ví dụ:
/ /home /home/username/www /home/username/www/trangwebcuaban.com /home/username/www/trangwebcuaban.com/thumuc /home/username/www/trangwebcuaban.com/thumuc/thumuccon
Đây là cách Apache có thể xử lý các quy tắc (rule) trong file .htaccess mà không cần khởi động lại/nạp lại tải lại phần lõi (core) của mình, nhưng như bạn thấy, đó là một vấn đề gây tốn tài nguyên nghiêm trọng, đặc biệt cho các trang web lớn với hàng triệu lưu lượng truy cập. Có thể nói .htaccess là chức năng gây tốn tài nguyên và hiệu năng thuộc dạng cao của Apache. Điều này là không tốt cho tốc độ Website/Web Server. Bảng so sánh hiệu suất truy xuất file dưới đây sẽ cho các bạn thấy rõ hiệu suất của các web server:
Requests [Per Hour] | Nginx FS Stats | Nginx FS Reads | Apache FD Stats | Apache FS Reads | Comment |
1 | 1 | 1 | 6 | 4 | Single Request [Pretty much no load] |
10 | 10 | 10 | 60 | 40 | Ten Requests [Pretty much no load] |
3,600 | 3,600 | 3,600 | 21,600 | 14,400 | 1 req/sec [Very low load] |
144,000 | 144,000 | 144,000 | 864,000 | 576,000 | 40 req/sec [Moderate traffic – nothing very large] |
324,000 | 324,000 | 324,000 | 1,944,00 | 1,296,000 | 90 req/sec [Higher traffic site – not massive] |
576,000 | 576,000 | 576,000 | 3,456,000 | 2,304,000 | 160 req/sec [Pretty high traffic – still not massive though] |
Ngoài ra trên thực tế file .htaccess thực sự là không an toàn, vì nó được cung cấp như là một cách để thay đổi các thiết lập máy chủ web như cang thiệp vào cấu hình file php.ini… và trang web từ một tập tin .htaccess duy nhất mà được đặt bên trong thư mục chủ của mỗi trang web. Điều này sẽ không xảy ra nếu bạn có quy tắc của bạn trong cấu hình Nginx, như chỉ cho phép người dùng root hay ngươi dùng được ủy quyền mới được phép làm như vậy. Như vậy, file . htaccess ngoài cung cấp một sự linh hoạt và thuận tiện cho việc quản trị hoặc phát triển web nó còn làm giảm hiệu suất đáng kể và mở thêm một phương thức thuận tiện cho các cuộc tấn công vào trang web của bạn. Kết luận: Như các bạn đã biết Nginx là một máy chủ web có hiệu suất cao với khả năng sử dụng rất ít RAM và các tính năng quan trọng để xây dựng cơ sở hạ tầng web hiện đại và hiệu quả. Hiệu năng chính là thế mạnh, ưu điểm của Nginx so với các Web Server khác và định hướng phát triển của Nginx theo hướng chú trọng, tối ưu có hiệu năng tốt nhất có thể. Vì vậy, nếu bạn vẫn yêu thích sự linh hoạt của .htaccess và yêu tố hiệu suất không ảnh hưởng tới bạn nhiều, bạn có thể làm việc với Apache và vẫn sử dụng file .htaccess. Tuy nhiên nếu bạn thật sư khắc khe và quam tâm về hiệu suất và bảo mật của ứng dụng web, bạn không nên cố tìm cách sử dụng file .htaccess trên Nginx vì đó là một sai lầm nghiêm trọng và sẽ phá hủy hiệu năng của Nginx.