[HTTP Series] Practice HTTP with Webserver Nginx

2 min read

HTTP/1.1 là phiên bản nền tảng của giao thức HTTP, được sử dụng rộng rãi trên internet. Để hiểu rõ cách hoạt động của HTTP, thực hành trực tiếp là phương pháp hiệu quả nhất. Trong bài viết này, chúng ta sẽ cùng tìm hiểu HTTP/1.1 thông qua việc cấu hình và sử dụng Nginx làm web server.

Install Nginx

Trên các hệ điều hành Linux phổ biến, bạn có thể cài Nginx bằng trình quản lý gói (apt/yum):

# Trên Ubuntu/Debian
sudo apt update
sudo apt install nginx

# Trên CentOS/RedHat
sudo yum install nginx

Sau khi cài đặt, khởi động Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Kiểm tra cài đặt bằng cách truy cập http://localhost trên trình duyệt. Nếu thành công, bạn sẽ thấy trang chào mừng của Nginx.

Configure Basic Nginx

Truy cập thư mục cấu hình của Nginx:

cd /etc/nginx

Sửa file cấu hình chính (default) hoặc tạo mới một file trong thư mục /etc/nginx/sites-available/. Ví dụ cấu hình cho một server HTTP/1.1:

server {
    listen 80;
    server_name localhost;

    location / {
        root /var/www/html;
        index index.html;
    }
}

Nếu bạn tạo 1 file mới, ví dụ có tên web-config, để nginx có thể run được file config đó, bạn cần symbolic link nó đến folder sites-enabled:

sudo ln -s /etc/nginx/sites-available/web-config /etc/nginx/sites-enabled/

Kiểm tra cấu hình

sudo nginx -t

Nếu config không có lỗi (error), tải lại Nginx:

sudo systemctl reload nginx

Tạo trang HTML Mẫu

sudo mkdir -p /var/www/html
echo "<h1>Chào mừng đến với Nginx!</h1>" | sudo tee /var/www/html/index.html

HTTP/1.1 with cURL

Gửi yêu cầu GET cơ bản

curl -v http://localhost

Trả về:

*   Trying 127.0.0.1:80...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: nginx/1.26.2
< Date: Thu, 28 Nov 2024 09:25:30 GMT
< Content-Type: text/html
< Content-Length: 41
< Last-Modified: Thu, 28 Nov 2024 09:21:08 GMT
< Connection: keep-alive
< ETag: "67483604-29"
< Accept-Ranges: bytes
<
<h1>Chào mừng đến với Nginx</h1>
* Connection #0 to host localhost left intact

Những điểm cần chú ý trong phản hồi:

  • Phiên bản HTTP: HTTP/1.1
  • Mã trạng thái (Status Code): 200 OK
  • Header: Bao gồm Content-Type, Connection, và các thông tin khác.

Kết Luận

Trong bài viết này, chúng ta đã khám phá những khái niệm cơ bản của HTTP/1.1 thông qua Nginx, từ cài đặt, cấu hình đến kiểm tra các tính năng như kết nối liên tục, chunked transfer, và header tuỳ chỉnh.

Hãy đón chờ Phần 2, nơi chúng ta sẽ tìm hiểu sâu hơn về các tính năng nâng cao của HTTP/1.1 và bắt đầu khám phá HTTP/2!

Link Series

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *