Nginx là gì? Cài đặt và cấu hình Nginx Web Server


Nginx là 1 trong những Web Server phổ biến, được sử dụng trong nhiều hệ thống máy chủ Web trên thế giới. Bản thân website vinasupport.com cũng đang sử dụng Nginx để làm máy chủ Web. Bài viết này sẽ giới thiệu, hướng dẫn cài đặt chi tiết trên Linux, cấu hình, config và sử dụng Nginx.

Nginx là gì?

Nginx là một Web Server nhẹ, mạnh mẽ và sử dụng kiến trúc đơn luồng, hướng sự kiện vì thế nó sử dụng tài nguyên hợp lý hơn Apache Server. Vì vậy nó thường được sử dụng phổ biến với các nhiệm vụ như là Load Balancing, HTTP caching, hay sử dụng như một Reverse Proxy.

  • Tác giả: Igor Sysoev
  • Phát triển bởi Nginx, Inc.
  • Phát hành lần đầu vào 04/10/2004
  • Phiên bản ổn định: 1.16.1 (13/08/2019) ở thời điểm viết bài này
  • Repository: hg.nginx.org/nginx
  • Ngôn ngữ lập trình: C
  • OS: BSD variants, HP-UX, IBM AIX, Linux, macOS, Solaris, Windows
  • Loại phần mềm: Web server, reverse/mail proxy server
  • Website: nginx.org

Cài đặt Nginx Web Server

Để cài đặt Nginx Web Server sử dụng lệnh sau:

# Trên CentOS / RHEL / Fedora
sudo yum install -y nginx

# Trên Ubuntu / Debian / LinuxMint
sudo apt install -y nginx

Khởi động và cho phép khởi động khi boot hệ điều hành

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Kiểm tra Service đã hoạt động chưa.

sudo systemctl status nginx.service

Mặc định tường lửa trên HDH sẽ chặn cổng 80 của Nginx, để mở cổng chúng ta sử dụng lệnh sau:

# Trên CentOS / RHEL / Fedora

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

# Trên Ubuntu / Debian / LinuxMint
sudo ufw allow 'Nginx Full'

Mở trình duyệt và truy cập với đường dẫn http://<Hostname hoặc IP Address> mà hiển thị trang “Test Page” của Nginx thì chúng ta đã cài đặt thành công.

Các lệnh cần thiết để quản lý

Kiểm tra cú pháp file cấu hình

sudo nginx -t

Reload lại file cấu hình

sudo nginx -s reload

Mở file log

sudo nginx -s reopen

Cấu hình Nginx Web Server

Danh sách file và thư mục quan trọng

  • /etc/nginx/nginx.conf: File config chính
  • /etc/nginx/conf.d: Thư mục chưa các file config của riêng bạn
  • /etc/nginx/sites-available: Thư mục chưa các file config VirtualHost, cho phép chúng ta cấu hình riêng biệt cho từng website
  • /etc/nginx/sites-available/default: File config Virtual Hosts mặc định

Cấu hình Virtual Hosts

Tạo file Virtual Hosts cho domain ở đường dẫn /etc/nginx/sites-available/example.com.conf với nội dung như sau:

server {
       listen 80;
       listen [::]:80;

       server_name example.com;

       root /var/www/example.com;
       index index.html;

       location / {
               try_files $uri $uri/ =404;
       }
}

Thay example.com thành địa chỉ tên miền của bạn

Ý nghĩa của các tham số:

  • listen 80: Lắng nghe và nhận các kết nối trên cổng 80 (HTTP Port)
  • listen [::]:80: Tương tự nhưng cho địa chỉ IPv6
  • server_name: Địa chỉ tên miền
  • root: Đường đẫn thư mục chứa source code website
  • index: File sẽ gọi đến đầu tiên
  • location: Cách trả về tài nguyên trên máy chủ, khi có request tới 1 URL

Cấu hình Log

Thông thường, log của Nginx được lưu ở trong thư mục /var/log/nginx gồm có 2 file là:

  • access.log: Lưu lại thông tin truy cập tới Web Server
  • error.log: Lưu lại thông tin lỗi

Để thay đổi đường dẫn 2 file này chúng ta sửa 2 tham số là error_logaccess_log trong file /etc/nginx/nginx.conf:

http {
        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
}

Bạn có thể thêm 2 tham số này vào cấu hình virtualhost để đặt đường dẫn file log riêng biệt cho từng website.

Cấu hình gzip

Gzip là phương pháp nén dữ liệu trả về của server, giúp giảm tải thời gian tải tài nguyền từ server về client.

Để bật gzip trên Nginx chúng ta sửa file config /etc/nginx/nginx.conf

http {
        ##
        # Gzip Settings
        ##

        gzip on;

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web