NGINX là gì?
NGINX là một phần mềm web server mã nguồn mở nỗi tiếng. Ban đầu nó dùng để phục vụ web HTTP. Tuy nhiên, ngày nay nó cũng được dùng làm reverse proxy, HTTP load balancer và email proxy như IMAP, POP3, và SMTP.
NGINX xuất bản chính thức vào tháng 10 năm 2004. Nhà sáng lập của phần mềm này là Igor Sysoev, triển khai dự án từ năm 2002 để giải quyết vấn đề C10k. C10k là giới hạn của việc xử lý 10 ngàn kết nối cùng lúc. Ngày nay, có nhiều web server còn phải chịu nhiều kết nối hơn vậy để xử lý. NGINX sử dụng kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous). Tính năng này khiến NGINX server trở nên đáng tin cậy, tốc độ và khả năng mở rộng lớn nhất.
Vì khả năng mạnh mẽ, và để có thể xử lý hàng ngàn kết nối cùng lúc, nhiều website có traffic lớn đã sử dụng dịch vụ NGINX. Một vài trong số những ông lớn công nghệ dùng nó là Google, Netflix, Adobe, Cloudflare, WordPress, và còn nhiều hơn nữa.
Let’s Encrypt là gì?
Let’s Encrypt là Tổ chức phát hành chứng chỉ (CA) cung cấp cách dễ dàng để lấy và cài đặt chứng chỉ TLS / SSL miễn phí , do đó cho phép HTTPS được mã hóa trên máy chủ web. Nó đơn giản hóa quy trình bằng cách cung cấp một ứng dụng khách phần mềm Certbot, phần mềm sẽ tự động hóa hầu hết các bước cần thiết. Hiện tại, toàn bộ quá trình lấy và cài đặt chứng chỉ hoàn toàn tự động trên cả Apache và Nginx.
Trong hướng dẫn này, bạn sẽ sử dụng Certbot để lấy chứng chỉ SSL miễn phí cho Nginx trên Ubuntu 21.04 và thiết lập tự động gia hạn chứng chỉ của bạn.
Hướng dẫn này sẽ sử dụng tệp cấu hình máy chủ Nginx riêng biệt thay vì tệp mặc định. Chúng tôi khuyên bạn nên tạo các tệp khối máy chủ Nginx mới cho từng miền vì nó giúp tránh các lỗi thường gặp và duy trì các tệp mặc định dưới dạng cấu hình dự phòng.
Để làm theo hướng dẫn này, bạn sẽ cần:
Một máy chủ Ubuntu 21.04 được cài đặt sẵn mặc đinh và một tài khoản có quyền hạn sudo.
Tên miền đã đăng ký. Hướng dẫn này sẽ sử dụng
example.com
xuyên suốt. Bạn có thể mua tên miền từ các công ty cung cấp tên miềnCả hai bản ghi DNS sau được thiết lập cho máy chủ của bạn.
- Bản ghi A với việc example.com trỏ đến địa chỉ IP public của máy chủ của bạn.
- Bản ghi CNAME với việc trỏ www.example.com đến example.com
Cài đặt Nginx trên Ubuntu 21.04
Bước 1 – Cài đặt Nginx
sudo apt update sudo apt install nginx
Bước 2: Thiết lâp tường lửa
- Nginx Full : Cấu hình này mở cả cổng 80 (lưu lượng web bình thường, không được mã hóa) và cổng 443 (lưu lượng được mã hóa TLS / SSL)
- Nginx HTTP : Cấu hình này chỉ mở cổng 80 (lưu lượng web bình thường, không được mã hóa)
- Nginx HTTPS : Cấu hình này chỉ mở cổng 443 (lưu lượng được mã hóa TLS / SSL
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22/tcp sudo ufw enable sudo ufw reload sudo ufw statusMàn hình sẽ trả về những cổng nào được truy cập:
To Action From -- ------ ---- 80/tcp ALLOW IN Anywhere 443/tcp ALLOW IN Anywhere 22/tcp ALLOW IN Anywhere 80/tcp(v6) ALLOW IN Anywhere (v6) 443/tcp(v6) ALLOW IN Anywhere (v6) 22/tcp (v6) ALLOW IN Anywhere (v6)
Bước 3: Cấu hình Nginx
Tạo thư mục cho tên miền example.com như sau:sudo mkdir -p /var/www/example.com/html sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.comTiếp theo, tạo một
index.html
trang mẫu bằng cách sử dụng nano
hoặc trình chỉnh sửa yêu thích của bạn:
nano /var/www/example.com/html/index.htmlBên trong, thêm HTML mẫu sau:
<html> <head> <title>Welcome to example.com!</title> </head> <body> <h1>Success! The example.com server block is working!</h1> </body> </html>
Success! The example.com server block is working!
Lưu và đóng tệp bằng cách nhậpCTRL
, X
sau đó Y
và ENTER
khi bạn hoàn thành.
Để Nginx sử dụng nội dung này, thay vì sửa đổi trực tiếp tệp cấu hình mặc định, hãy tạo một tệp mới tại:
nano /etc/nginx/conf.d/example.com.confVới nội dung như sau:
server { listen 80; listen [::]:80; root /var/www/example.com/html; index index.html index.htm index.php; server_name example.com www.example.com; location / { try_files $uri $uri/ =404; } }Lưu và đóng tệp bằng cách nhập
CTRL
, X
sau đó Y
và ENTER
khi bạn hoàn thành.
Khởi động lại NGINX để cập nhật cấu hình
sudo systemctl restart nginx
Cài đặt Certbot trên Ubuntu 21.04
Cài đặt Certbot và đó là plugin Nginx:
sudo apt install certbot python3-certbot-nginx
Certbot hiện đã sẵn sàng để sử dụng, nhưng để nó tự động định cấu hình SSL cho Nginx, chúng ta cần xác minh một số cấu hình của Nginx.
(to be continued)