Cách thiết lập Nginx Server Block trên CentOS 7

4 năm trước

 

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 truy cập lớn 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 các server block để quản lí cấu hình của một website hay tên miên riêng biệt. Server block cho phép server lưu trữ nhiều tên miền hoặc giao diện bằng một hệ thống ghép đôi giữa nó với server block tương ứng.

Thông tin về một domain sẽ được lưu trữ trong một thư mục riêng trên server nên hệ thống có thể mở rộng mà không quan tâm đến giới hạn về phần mềm, miễn là server có thể đảm bào phục vụ được lưu lượng sử dụng.

Bài viết này sẽ hướng dẫn bạn cách thiết lập Nginx Server Block trên CentOS 7.

 

Yêu cầu

 

Thêm Nginx repository vào danh sách các nguồn ứng dụng của server:

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

Dùng lệnh yum để download và cài Nginx.

sudo yum install nginx

Sau khi cài xong, log in vào user trên để tiếp tục.

Note: Dưới đây ta sẽ cấu hình server block cho 2 tên miền làm ví dụ example.com và example2.com. Tuy nhiên, hãy thay thế tên miền này cùng các giá trị chữ đỏ bằng tên miền và các giá trị đi kèm của bạn nếu có thể.

Nếu không có một tên miền thật, hãy sử dụng những giá trị "bù nhìn" (dummy value ) để kiểm tra kết quả được trình bày ở phần cuối bài viết.

 

Bước 1 — Tạo Cấu trúc Thư mục

 

Thư mục gốc (document root) sẽ được đặt riêng là các thư mục con trong /var/www . Ta sẽ tạo cho mỗi server block một thư mục con riêng.

Trong mỗi thư mục con đó, ta sẽ tạo một thư mục html để lưu trữ dữ liệu web để thuận tiện cho việc lưu trữ và quản lí.

Dùng lệnh mkdir để tạo các thư mục con (với cờ -p cho phép tạo các thư mục con lồng nhau):

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

 

Cấp quyền

Các thư mục vừa tạo chỉ có thể sử dụng bởi root user. Ta cần cấp quyền truy cập và chỉnh sửa các file bên trong nó cho user bình thường bằng lệnh chown:

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

Với $USER là user bạn đang sử dụng khi chạy lệnh. Đến đây user của ta đã có quyền sở hữu với thư mục con public_html .

Ta cũng cần thay đổi quyền truy cập cho các thư mục này để đảm bảo quyền đọc của user trên chúng:

sudo chmod -R 755 /var/www
 

Bước 2 — Tạo trang demo

 

Ta sẽ tạo một file html đơn giản tên là index.html cho mỗi tên miền cụ thể.

Bắt đầu với example.com. Tạo file index.html với l

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

Copy đoạn code sau vào file: 

 

Success! The example.com virtual host is working!

Lưu và đóng file.

Ta cũng có thể copy file này sang thư mục của tên miền thứ hai bằng lệnh:

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

Mở file index.html ( trong thư mục của tên miền thứ hai) sau đó sửa lại nó.

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

Success! The example2.com virtual host is working!

 

 

Bước 3 — Tạo file Server Block mới

 

Các file Server block xác địch cấu hình cho các trang web đi cùng với nó và quyết định phản hồi của server đối với các yêu cầu với những tên miền khác nhau.

Đầu tiên ta sẽ tạo các thư mục để lưu file. Thư mục sites-available lưu trữ tất cả các file server block, còn thư mục sites-enabled sẽ lưu đường dẫn đến server block cần kích hoạt. Tạo hai thư mục đó với lệnh:

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

Tiếp theo ta sẽ chỉ cho Nginx tìm kiếm các file server block trong thư mục sites-enabled.

Mở file cấu hình Nginx:

sudo nano /etc/nginx/nginx.conf

Thêm những dòng sau vào cuối khối http {} :

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

Dòng đầu tiên cho phép Nginx sử dụng các file server block trong sites-enabled ,còng dòng lệnh tiếp theo tăng bộ nhớ được phép sử dụng cho việc phân giải máy chủ ( vì ta đang sử dụng multiple domain).

Lưu và đóng file.

Tạo file Server Block

Nginx chứa một file server block mặc định là default.conf , ta có thể dùng nó làm mẫu cho quá trình cấu hình.

Tạo file cấu hình server block mới bằng cách copy file cấu hình mặc định:

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

Mở file vừa tạo với quyền root:

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

Note: Tất cả các file cấu hình server block phải kết thúc bằng đuôi .conf.

Output sẽ như sau:

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 ta cần chỉnh sửa server_name, thay nó bằng example.com, và  www.example.com để cả các yêu cầu chứa www. và không chứa www. đều được phản hồi như nhau:

server_name example.com www.example.com;

Tiếp theo ta sẽ chỉnh sửa mục root , trỏ đến thư mục gốc vừa tạo ở trên:

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

Thêm vào lệnh try_files kết thúc bằng 404 error nếu tên file hoặc thư mục không hợp lệ

try_files $uri $uri/ =404;

Sau khi edit xong file cấu hình của ta sẽ như sau:

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ặp lại các bước trên để tạo một file server block thứ hai cho domain name còn lại:

Đầu tiên dùng lệnh cp:

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

Mở file:

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

Edit file:

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;
}}

Cuối cùng lưu và thoát.

 

Bước 4 — Kích hoạt các file Server Block 

Sau khi tạo các file server block, ta cần kích hoạt chúng bằng cách tạo đường dẫn cho chúng từ thư mục sites-enabled cho chúng:

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

Restart Nginx để áp dụng các thay đổi: 

sudo systemctl restart nginx
 

Bước 5 — Thiết lập File Local Host (Tùy chọn )

 

Nếu đang dùng các tên miền ví dụ tahy vì tên miền thật, bạn vẫn có thể test các file vừa tạo bằng cách thay đổi tạm thời file hosts trên máy tính. Việc này sẽ điều hướng tất cả các yêu cầu đến tên miền ví dụ đến VPS server. Lưu ý rằng nó chỉ có hiệu lực với truy cập trên máy tính của bạn.

Note: Các thao tác sau được thwucj hiện trên máy của bạn, không phải trên VPS server.

Với các máy Mac hoặc Linux , edit các file hosts bằng quyền admin với lệnh:

sudo nano /etc/hosts

Thêm vào public IP address của VPS, sau đó là tên miền ứng với VPS đó:

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

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

 

Vào trình duyệt gõ:

http://example.com

Nếu thấy trang web sau:

Success! The example.com server block is working!

Thì các bước cấu hình trên đã thành công.

Nếu vừa thay đổi các file hosts ,hãy xóa các dòng vừa thêm vào để đàm bảo máy tính cảu bạn không bị truy cập trái phép từ bên ngoài.

 

Tổng kết

Đến đây bạn đã có một server CentOS 7 có khả năng xử lí nhiều site với các tên miền khác nhau với mỗi site đó. Mở rộng chúng bằng cách thêm vào nhiều file server block khác, vì việc thêm các file này không bị giới hạn bởi phần mềm , miễn là server của bạn có khả năng xử lí được lưu lượng truy cập.