Hướng dẫn cài Nginx server block trên CentOS 7

2 năm trước

 

Giới thiệu

Nginx là một trong những Web server phổ biến nhất trên thế giới , có chức năng quản lý một trong số các site có lưu lượng lớn nhất và cao nhất trên Internet. Trên thực tế, Nginx thường nhẹ hơn và có quy mô rộng hơn Apache, hơn nữa nó có thể được sử dụng như một Web server hoặc một reverse proxy.

Nginx sử dụng server blocks để quản lý cấu hình cho một site hoặc vùng cá nhân. Các Server blocks cho phép một máy chủ quản lý các vùng hoặc giao diện đa năng với hệ thống tương xứng, điều này khá phù hợp cho những ai muốn quản lý nhiều hơn một site chỉ với một VPS .

Mỗi vùng được định cấu hình sẽ điều hướng người truy cập tới một địa chỉ chứa thông tin cụ thể của site đó, và một server có thể xử lý nhiều site một lúc. Phương pháp này có thể mở rộng thêm được mà không bị giới hạn phần mềm miễn là server của bạn có thể xử lý được luồng dữ liệu các site đó.

Trong phần này chúng ta sẽ lướt qua cách cài đặt Nginx trên CentOS 7 VPS. Đồng thời tìm hiểu cách làm thế nào để cung cấp nội dung cho người truy cập tùy vào tên miền mà họ yêu cầu.

Yêu cầu căn bản

Trước khi cài Nginx thì có vài yêu cầu căn bản bạn cần hoàn thành trước:

Đã có sẵn máy chủ CentOS 7 hoặc có thể mua tại ViCloud.

Truy cập máy chủ CentOS 7 với tư cách người dùng giả định sudo .

Cài đặt Nginx để định cấu hình server blocks cho nó. Bạn có thể cài đặt thông qua command  yum :

Đầu tiên thêm kho lưu trữ Nginx vào danh mục nguồn phần mềm của server :

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Và sử dụng command yum để download và cài đặt Nginx.

sudo yum install nginx

Sau đó đăng nhập với tư cách người dùng ảo thông qua SSH và tiếp tục chuyển sang bước tiếp theo.

Note: Cấu hình ví dụ trong phần này sẽ tạo một server block cho  example.com và example2.com. Đây chỉ là các ví dụ tham khảo , bạn có thể thay thế tên miền và các giá trị khác mà bạn muốn.

Nếu bạn không có tên miền thực thì chúng tôi sẽ chỉ cho bạn cách kiểm tra cấu hình server block với giá trị dummy ở phần cuối.

 

Bước 1 - Tạo danh mục

Đầu tiên bạn cần có dữ liệu site để phục vụ cho người truy cập.

Mục document root sẽ cài đặt danh mục cá nhân ở địa chỉ /var/www . Chúng ta sẽ tạo một danh mục ở đây cho mỗi server block .

Trong mỗi danh bạ đó tạo một địa chỉ html để chứa các files, điều này sẽ giúp ta có thể quản lý linh hoạt hơn..

Ta có thể tạo danh bạn sử dụng command mkdir với cờ -p flag cho phép tạo folder với một folder con định sẵn bên trong đó :

sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/example2.com/html

Phần màu đỏ đại diện tên miền mà chúng ta muốn VPS thực hiện.

Lấy giấy phép

Giờ ta có một danh mục trong file được sở hữu bởi người dùng gốc  root , nếu muốn người bình thường cũng có thể chỉnh sửa danh mục web thì ta cần dùng lệnh chown để thay đổi quyền sở hữu:

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example2.com/html

Biến $USER  sẽ lấy thông tin người dùng hiện đang truy cập ngay khi bạn nhập lệnh. Lúc này người dùng bình thường cũng sở hữu một danh mục con   public_html để lưu trữ nội dung.

Chúng ta có thể chỉnh sửa giấy phép một chút để ta có thể đọc được thông tin danh mục web cũng như tất cả cá file , tài liệu khi truy cập sao cho chuẩn xác nhất :

sudo chmod -R 755 /var/www

Giờ thì web của bạn đã có giấy phép và người dùng có thể tạo nội dung trong những thư mục được cho phép.

 

Bước 2 -  Tạo trang Demo cho mỗi site.

Khi đã tạo xong danh bạ, giờ thì ta chuyển sang tạo nột dung.

Vì đây chỉ là bản Demo cho nên giao diện khá là đơn giản , chúng ta chỉ cần tạo một trang tại địa chỉ index.html trên mỗi site để phân biệt mỗi tên miền đó.

Bắt đầu với example.com. Ta có thể mở file index.html bằng cách nhập:

nano /var/www/example.com/html/index.html

Trong file này tạo một nguồn HTML để hiển thị site mà trang được kết nối. 

 

   Success! The example.com server block is working!

Lưu và đóng file khi hoàn thành.

Ta có thể copy file này để sử dụng như một template cho file thứ 2 tại địa chỉ index.html  bằng cách nhập:

cp /var/www/example.com/html/index.html /var/www/example2.com/html/index.html

Giờ thì mở file đó ra và chỉnh sửa một vài thông tin:

nano /var/www/example2.com/html/index.html
 

Success! The example2.com server block is working!

Lưu và đóng. Giờ thì bạn đã có một page để kiểm tra cấu hình server block.

 

Bước 3 - Tạo các file server block mới

Mỗi file server block định rõ cấu hình của các site riêng biệt và cách để Niginx web server có thể phản hồi các yêu cầu tên miền khác nhau.

Để bắt đầu chúng ta sẽ cài đặt danh mục lưu trữ các server block cũng như danh mục mà sẵn sàng để phục vụ cho người truy cập. Danh mục   sites-available  sẽ lưu các file server block, còn danh mục  sites-enabled sẽ chứa các đường link dẫn tới các server block mà chúng ta muốn thực hiện . Chúng ta có thể tạo cả hai danh bạ bằng cách nhập:

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

Note: Bố cục danh mục này được Debian giới thiệu và ta thêm vào để tăng tính linh hoạt trong việc quản lý các server block.

Tiếp theo là chỉ định cho Nginx tìm kiếm các server block trong thư mục sites-enabled  để thực hiện thì ta cần chỉnh sửa cấu hình chính của Nginx bằng cách thêm dòng lệnh:

sudo nano /etc/nginx/nginx.conf

Thêm dòng này để kết thúc khối http {} :

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Dòng đầu tiên hướng dẫn Nginx tìm các server block ở trong danh mục sites-enabled, dòng thứ hai tăng dung lượng bộ nhớ để phân tích tên miền khi mà ta sử dụng tên miền đa năng.

Khi thay đổi xong thì lưu và đóng. Giờ thì ta có thể tạo một server block mới rồi.

Tạo một file server block đầu tiên

Theo mặ định một Niginx chứa một server block sẽ được gọi là default.conf mà ta có thể sử dụng như một template cho các cấu hình của mình. Để tạo mới ta chỉ việc copy dòng file mặc định:

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/example.com.conf

Giờ thì mở file trong công cụ chỉnh sửa với đặc quyền gốc:

sudo nano /etc/nginx/sites-available/example.com.conf

Note: tất cả các file server block phải được kết thúc bằng .conf.

Bỏ đi các dòng comment , file sẽ trông như thế này:

server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}}

Đầu tiên cần điều chỉnh server_name chỉ định Nginx trỏ tới khối server block này , chúng ta sẽ khai báo tên server chính, example.com cũng như là một biệt hiệu thêm vào ở địa chỉ  www.example.com để cả hai yêu cầu lệnh là www. và  non-www. đều được cấp trong cùng một nội dung:

server_name example.com www.example.com;

Note: Mỗi câu lênh phải kết thúc bằng dấu (;),nếu không sẽ có lỗi phát sinh.

Tiếp theo, muốn chỉnh sửa tài liệu gốc root  Trỏ tới tài liệu gốc ở site mà bạn đã tạo.

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

Thêm lệnh try_files nếu không tìm thấy tên file hoặc danh mục:

try_files $uri $uri/ =404;

Khi nhập xong, file của bạn sẽ trông như thế này:

server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/example.com/html;
index index.html index.htm;
try_files $uri $uri/ =404;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}}

Đó là tất cả những thứ ta cần cho một cấu hình đơn giản. Giờ thì lưu file và đóng.

Tạo file server block thứ hai

Để tạo file thứ hai thì chỉ cần copy file thứ nhất và chỉnh sửa chút là xong.

Dùng lệnh cp:

sudo cp /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-available/example2.com.conf

Mở file với đặc quyền gốc trong công cụ chỉnh sửa:

sudo nano /etc/nginx/sites-available/example2.com.conf

Giờ thì bạn có thể chỉnh sửa sao cho phù hợp. Sau khi xong file sẽ như thế này:

server {
listen 80;
server_name example2.com www.example2.com;
location / {
root /var/www/example2.com/html;
index index.html index.htm;
try_files $uri $uri/ =404;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}}

Lưu và đóng.

 

Bước 4 - Hữu hiệu hóa các files server block mới

Để hữu hiệu hóa ta cần tạo một link tượng trưng ở danh mục sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
sudo ln -s /etc/nginx/sites-available/example2.com.conf /etc/nginx/sites-enabled/example2.com.conf

Khi xong thì khởi tạo lại Nginx để lưu thay đổi:

sudo systemctl restart nginx
 

Bước 5 - tạo file quản lý cục bộ ( không bắt buộc )

Nếu bạn đang sử dụng tên miền ví dụ thay thế tên miền thực tế để kiểm nghiệm quá trình thì bạn cũng có thể kiểm nghiệm chức năng của nó bằng việc chỉnh sửa tạm thời file hosts trên máy tính của bạn. file này sẽ ngăn chặn các yêu cầu truy cập tên miền mà bạn đã định cấu hình và trỏ chúng tới server VPS, cũng giống như hệ thống DNS khi bạn sử dụng miền đăng ký, tuy nhiên nó chỉ làm việc được trên máy tính cá nhân và nó rất hữu hiệu trong việc kiểm nghiệm chức năng.

Note: Phải đảm bảo rằng bạn đang thao tác các bước này trên máy tính cá nhân chứ không phải trên server VPS và bạn cần truy cập với các nhãn quyền quản trị .

Nếu dùng máy hệ điều hành Mac hay Linux thì cần chỉnh sửa chút file  hosts :

sudo nano /etc/hosts

Nội dung cần thêm vào là địa chỉ IP của VPS ứng với tên miền bạn sử dụng:

127.0.0.1 localhost
127.0.1.1 guest-desktopserver_ip_address example.comserver_ip_address example2.com

Chúng sẽ điều hướng tới example.com và example2.com trên máy tính cục bộ và gửi chúng đến server  server_ip_address.

 

Bước 6 -  Kiểm tra kết quả

Để kiểm tra bạn chỉ cần đi đến tên miền mà bạn đã định cấu hình trên trình duyệt:

http://example.com

Bạn sẽ thấy dòng chữ thế này:

Success! The example.com server block is working!

Cũng như thế , bạn có thể kiểm tra vói các tên miền khác.

Nếu tất cả các site bạn định cấu hình đều hoạt động thì bạn đã cài đặt các Nginx server blocks trên máy chủ CentOS thành công.

Nếu bạn đã chỉnh sửa file hosts  thì bạn nên xóa dòng mà bạn đã thêm vào để xác minh cấu hinh của bạn hoạt động . Điều này giúp tránh được vieecj file chứa quá nhiều thông tin không cần thiết.

 

Kết luận

Giờ thì bạn đã có một máy chủ CentOS 7 có thể xử lý nhiều site đa năng với nhiều miền khác nhau. Bạn có thể mở rộng thêm nhiều khối server block bằng cách lặp lại các bước như bên trên. Tên miền mà Nginx thực hiện sẽ không bị giới hạn phần mềm vậy nên bạn không cần phải lo lắng về dung lượng mà server có thể xử lý.