TÌM HIỂU VỀ NGINX (P1)
** I.WEB SERVER**
1. Khái niệm.
Web server là máy chủ web được dùng để xử lý các request từ trình duyệt web máy khách và gửi thông tin đến client thông qua giao thức HTTP hoặc những giao thức khác. Có nhiều webserver phổ biến thường được sử dụng hiện nay như: Apache, Nginx, IIS...
Những chương trình trên web server được cài đặt nhằm phục vụ ứng dụng web. Khi được tiếp nhận các request từ trình duyệt, webserver ngay lập tức sẽ gửi phản hồi đến client thông qua giao thức HTTP hoặc những giao thức khác.
2. Thành phần của một Web Server.
-
Phần cứng: Máy chủ web server sẽ được kết nối với internet và truy cập bằng một tên miền giống như google.com. Đây cũng là nơi lưu trữ các file thành phần của một website (như file ảnh, CSS, Javascript và HTML) và có thể chuyển chúng tới thiết bị người dùng cuối cùng.
-
Phần mềm: Web server sẽ bao gồm các phần để điều khiển người dùng truy cập tới các file lưu trữ trên một HTTP server. Một HTTP server là một phần mềm có thể hiểu được các URL và giao thức trình duyệt đang sử dụng. Bất cứ lúc nào trình duyệt cần đến file dữ liệu trên máy chủ, trình duyệt sẽ gửi yêu cầu file đó thông qua HTTP.
3. Chức năng của Web Server.
Chức năng của web server là lưu trữ, xử lý và phân phối nội dung của website đến với client. Bao gồm:
- Xử lý dữ liệu qua giao thức HTTP: Xử lý và cung cấp thông tin cho khách hàng thông qua các máy tính cá nhân trên Internet qua giao thức HTTP. Nội dung được chia sẻ từ máy chủ web là những nội dung định dạng HTML, các thẻ style sheets, hình ảnh, những đoạn mã script hỗ trợ nội dung văn bản thôi.... Bạn có thể hiểu đơn giản là khi bạn truy cập vào Bizfly.vn, máy chủ sẽ cung cấp đến cho bạn tất cả dữ liệu về trang web đó thông qua lệnh giao tiếp.
- Kết nối linh hoạt: Máy tính nào cũng có thể là một máy chủ nếu nó được cài đặt một chương trình phần mềm server và có kết nối internet.
- Chương trình chuyển đổi thông minh: Phần mềm web server cũng giống như các phần mềm khác, nó cho phép người dùng cài đặt và hoạt động trên bất kỳ máy tính nào đáp ứng đủ yêu cầu về bộ nhớ.
- Lưu trữ dữ liệu trên hình thức thuê các máy chủ nhỏ, máy chủ áo VPS hoặc hosting.
4. Cách thức hoạt động của Web Server.
Giao tiếp thông qua HTTP là giao thức truyền phát siêu văn bản bao gồm Textual và Stateless:
- Textual: Tất cả các lệnh đều là văn bản thuần túy và người dùng đều có thể đọc hiểu.
- Stateless: Là một ứng dụng server có nhiệm vụ cung cấp các quy tắc rõ ràng về cách server (máy chủ) và client ( khách hàng) giao tiếp với nhau. Các quy tắc đó cụ thể như sau:
- Web server bắt buộc trả lời mọi yêu cầu HTTP và chỉ mắc ít nhất một thông điệp lỗi.
- Chỉ khách hàng tạo được các yêu cầu HTTP tới các máy chủ. Tương tự, chỉ các máy chủ mới có thể đáp trả yêu cầu HTTP của khách hàng.
- Khi yêu cầu một file qua HTTP, khách hàng phải cung cấp URL của file đó.
- Các loại Web Server phổ biến.
- Nginx: là web server được dùng khá là phổ biến hiện nay, đây là 1 máy chủ reverse proxy mã nguồn mở cho các giao thức HTTP, HTTPS, SMTP, POP3 và IMAP, cũng như là 1 máy chủ cân bằng tải (load balancer), HTTP cache và web.
- Apache là phần mềm web server được sử dụng rộng rãi nhất thế giới. Apache được phát triển và duy trì bởi một cộng đồng mã nguồn mở dưới sự bảo trợ của Apache Software Foundation. Apache được phát hành với giấy phép Apache License, là một phần mềm tự do, miễn phí. Apache có các tính năng như chứng thực người dùng, virtual hosting, hỗ trợ CGI, FCGI, SCGI, WCGI, SSI, ISAPI, HTTPS, Ipv6,…
- Lighttpd là một phần mềm mã nguồn mở, an toàn và linh hoạt, đặc biệt miễn phí và được phân phối theo giấy phép BSD.. Lighttpd được viết bởi Jan Kneschke. Lighttpd chiếm ít tài nguyên, memory thấp, CPU nhỏ. Lighttpd được phát triển bằng ngôn ngữ C. chạy trên hệ điều hành Linux, Windows, Mac OS,…
- IIS (Internet Information Services) do Microsoft phát triển, sản phẩm này được tích hợp cùng với hệ điều hành Windows. Server. Trong IIS bao gồm nhiều dịch vụ như: dịch vụ Web Server, dịch vụ FTP Server.
II. NGINX
1.Giới thiệu.
Nginx là một máy chủ Web Server mã nguồn mở. Dự án Nginx được phát hành và sử dụng như một web server được thiết kế hướng đến mục đích cải thiện tối đa hiệu năng và sự ổn định. Bên cạnh đó, nhờ vào các khả năng của máy chủ HTTP mà NGINX còn có thể hoạt dộng như một proxy server cho email (IMAP, POP3, và SMTP), reverse proxy, và trung gian để cân bằng tải cho các máy chủ HTTP, TCP, và UDP.
Nginx là một máy chủ Web Server mã nguồn mở. Dự án Nginx được phát hành và sử dụng như một web server được thiết kế hướng đến mục đích cải thiện tối đa hiệu năng và sự ổn định. Bên cạnh đó, nhờ vào các khả năng của máy chủ HTTP mà NGINX còn có thể hoạt dộng như một proxy server cho email (IMAP, POP3, và SMTP), reverse proxy, và trung gian để cân bằng tải cho các máy chủ HTTP, TCP, và UDP. Những công ty lớn sử dụng Nginx bao gồm: Autodesk, Atlassian, Intuit, T-Mobile, GitLab, DuckDuckGo, Microsoft, IBM, Google, Adobe, Salesforce, VMWare, Xerox, LinkedIn, Cisco, Facebook, Target, Citrix Systems, Twitter, Apple, Intel và rất nhiều công ty khác.
2. Nguyên lý hoạt động của Nginx.
Không giống như các chương trình máy chủ khác, Nginx không dựa vào luồng (threads) để xử lý các truy vấn (request) mà theo kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous) và có khả năng mở rộng.
3. Những tính năng của máy chủ HTTP Nginx.
- Có khả năng xử lý hơn 10.000 kết nối cùng lúc với bộ nhớ thấp.
- Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin.
- Tăng tốc reverse proxy bằng bộ nhớ đệm (cache), cân bằng tải đơn giản và khả năng chịu lỗi.
- Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, wsgi, SCGI, và các máy chủ memcached.
- Kiến trúc modular, tăng tốc độ nạp trang bằng nén gzip tự động.
- Hỗ trợ mã hoá SSL và TLS.
- Cấu hình linh hoạt; lưu lại nhật ký truy vấn
- Chuyển hướng lỗi 3XX-5XX
- Rewrite URL (URL rewriting) dùng regular expressions
- Hạn chế tỷ lệ đáp ứng truy vấn
- Giới hạn số kết nối đồng thời hoặc truy vấn từ 1 địa chỉ
- Khả năng nhúng mã PERL
- Hỗ trợ và tương thích với IPv6
- Hỗ trợ WebSockets
4. Cài đặt Nginx
Cài đặt Nginx và Enable cùng OS.
yum list -y nginx
yum install -y nginx
systemctl enable nginx.service
Sử dụng firewalld để mở port cho Nginx.
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp –permanent
firewall-cmd –reload
5. Tuning kernel để tối ưu cho Nginx.
Thêm các giá trị vào file /etc/sysctl.conf bằng:
vi /etc/sysctl.conf
6. Chạy thử Nginx.
Tạo 1 file /usr/share/nginx/html/index.html sau đó restart lại Nginx.
Mở trình duyệt truy địa chỉ 192.168.254.7:80 để xem kết quả. (gõ ip a để kiểm tra ip máy chủ)
7. Tìm hiểu SSL (Secure Sockets Layer)
(Mình sẽ ra 1 bài riêng về cơ chế của SSL và TLS)
8. Cấu hình Nginx làm Reverse proxy.
Tạo file /etc/nginx/reverse-proxy.conf để thêm cấu hình cho Nginx làm reverse-proxy.
Sau đó cần phải trỏ cho Nginx đọc file này trong file nginx.conf bằng thêm trường include trong hàm http
Kiểm tra và khởi động lại thì ta thấy nginx đã được cấu hình thành reverse-proxy
Note: Dùng nginx hạn chế chạy lệnh restart service mà sẽ dùng nginx -t (để kiểm trạng thái và check các lỗi trong config) và nginx -s reload (để add thêm các cấu hình mới để chạy mà ko làm gián đoạn toàn bộ kết nối của service đang chạy)
9. Cấu hình Cache trên Nginx.
Tạo file /etc/nginx/cache.conf để thêm cấu hình cho Nginx làm cache cho Web Server.
Kiểm tra và reload lại thì ta thấy nginx đã được cấu hình thành cache cho Nginx
All rights reserved