Thứ tư, 05/11/2014 | 00:00 GMT+7

Cách thiết lập server block Nginx trên CentOS 7

Nginx là một trong những web server phổ biến nhất trên thế giới và chịu trách nhiệm lưu trữ một số trang web lớn nhất và có lưu lượng truy cập cao nhất trên Internet. Trong hầu hết các trường hợp, Nginx nhẹ hơn và có khả năng mở rộng hơn Apache và được dùng như một web server hoặc như một Reverse Proxy .

Nginx sử dụng khối server để quản lý cấu hình cho một trang web hoặc domain riêng lẻ. Khối server cho phép một server lưu trữ nhiều domain hoặc giao diện bằng cách sử dụng một hệ thống phù hợp. Điều này có liên quan đến bất kỳ ai muốn lưu trữ nhiều hơn một trang web trên một VPS duy nhất.

Mỗi domain được cấu hình sẽ hướng khách truy cập đến một folder cụ thể chứa thông tin của trang web đó mà không bao giờ cho biết cùng một server cũng chịu trách nhiệm cho các trang web khác. Lược đồ này có thể mở rộng mà không có bất kỳ giới hạn phần mềm nào, miễn là server của bạn có thể xử lý lưu lượng truy cập mà tất cả các trang web thu hút.

Trong hướng dẫn này, ta sẽ giới thiệu cho các bạn cách cài đặt khối server Nginx trên CentOS 7 VPS. Trong quá trình này, bạn sẽ học cách cung cấp các nội dung khác nhau cho những khách truy cập khác nhau tùy thuộc vào domain họ đang yêu cầu.

Yêu cầu

Trước khi bạn bắt đầu với hướng dẫn này, có một số bước cần được hoàn thành trước.

Bạn cần quyền truy cập vào server CentOS 7 với user không phải root có quyền sudo . Nếu bạn chưa cấu hình account này, bạn có thể chạy qua hướng dẫn cài đặt server ban đầu CentOS 7 để tạo account này.

Bạn cũng cần cài đặt Nginx để cấu hình khối server cho nó. Nếu bạn muốn toàn bộ LEMP (Linux, Nginx, MySQL và PHP) trên server của bạn , bạn có thể làm theo hướng dẫn của ta về cách cài đặt LEMP trong CentOS 7 . Nếu bạn chỉ cần Nginx, bạn có thể cài đặt nó thông qua repository yum của Nginx:

Đầu tiên, thêm repository Nginx vào danh sách nguồn phần mềm trên server của bạn.

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

Đến đây bạn có thể sử dụng yum để download và cài đặt Nginx.

sudo yum install nginx 

Sau khi các bước này hoàn tất, hãy đăng nhập bằng account user không phải root của bạn thông qua SSH và tiếp tục với hướng dẫn.

Lưu ý: Cấu hình ví dụ trong hướng dẫn này sẽ tạo một khối server cho example.com và một khối khác cho example2.com . Những điều này sẽ được tham chiếu trong suốt hướng dẫn, nhưng bạn nên thay thế các domain hoặc giá trị của riêng mình trong khi làm theo. Để tìm hiểu cách cài đặt domain của bạn với DigitalOcean, hãy nhấp vào liên kết này .

Nếu bạn không có bất kỳ domain thực nào để chơi, ta sẽ chỉ cho bạn cách kiểm tra cấu hình khối server của bạn với các giá trị giả ở gần cuối hướng dẫn.

Bước một - Tạo cấu trúc folder

Trước tiên, ta cần tạo một cấu trúc folder sẽ chứa dữ liệu trang web để phục vụ cho khách truy cập.

Gốc tài liệu của ta (thư mục cấp cao nhất mà Nginx xem xét để tìm nội dung phục vụ) sẽ được đặt thành các folder riêng lẻ trong folder /var/www . Ta sẽ tạo một folder ở đây cho mỗi khối server mà ta dự định tạo.

Trong mỗi folder này, ta sẽ tạo một folder html chứa các file thực của ta . Điều này mang lại cho ta một số tính linh hoạt trong lưu trữ của ta .

Ta có thể tạo các folder này bằng mkdir (với cờ -p cho phép ta tạo một folder với một folder lồng nhau bên trong nó):

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

Lưu ý các phần màu đỏ thể hiện domain mà ta muốn cung cấp từ VPS của bạn .

Cấp quyền

Bây giờ ta có cấu trúc folder cho các file của bạn , nhưng chúng thuộc sở hữu của user root của ta . Nếu ta muốn regular user của bạn có thể sửa đổi các file trong folder web của ta , ta có thể thay đổi quyền sở hữu với chown :

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 giá trị của user mà bạn hiện đang đăng nhập như khi bạn gửi lệnh. Bằng cách làm này, regular user của ta hiện sở hữu các folder con public_html nơi ta sẽ lưu trữ nội dung của bạn .

Ta cũng nên sửa đổi các quyền của bạn một chút đảm bảo rằng quyền truy cập đọc được phép vào folder web chung cũng như tất cả các file và folder bên trong, để các trang có thể được phân phối chính xác:

sudo chmod -R 755 /var/www 

Web server của bạn bây giờ sẽ có các quyền cần thiết để cung cấp nội dung và user của bạn có thể tạo nội dung trong các folder thích hợp.

Bước hai - Tạo các trang demo cho mỗi trang web

Bây giờ ta đã có cấu trúc folder của bạn , hãy tạo một số nội dung để phục vụ.

Vì đây chỉ là để trình diễn và thử nghiệm, các trang của ta sẽ rất đơn giản. Ta sẽ tạo một trang index.html cho mỗi trang web xác định domain cụ thể đó.

Hãy bắt đầu với example.com . Ta có thể mở index.html trong editor của bạn bằng lệnh :

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

Trong file này, hãy tạo một trang HTML đơn giản cho biết trang web được kết nối với trang đó. Đối với hướng dẫn này, file cho domain đầu tiên của ta sẽ giống như sau:

<html>   <head>     <title>Welcome to Example.com!</title>   </head>   <body>     <h1>Success! The example.com server block is working!</h1>   </body> </html> 

Lưu file khi bạn hoàn tất.

Ta có thể sao chép file này để sử dụng làm mẫu cho index.html của trang web thứ hai của ta bằng lệnh :

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

Bây giờ, hãy mở file đó và sửa đổi các phần thông tin có liên quan:

nano /var/www/example2.com/html/index.html 
<html>   <head>     <title>Welcome to Example2.com!</title>   </head>   <body>     <h1>Success! The example2.com server block is working!</h1>   </body> </html> 

Lưu file này. Đến đây bạn có các trang cần thiết để kiểm tra cấu hình khối server .

Bước 3 - Tạo file khối server mới

Các file khối server là những gì chỉ cấu hình của các trang web riêng biệt của ta và chỉ định cách web server Nginx sẽ phản hồi với các yêu cầu domain khác nhau.

Để bắt đầu, ta cần cài đặt folder mà các khối server của ta sẽ được lưu trữ, cũng như folder cho Nginx biết rằng một khối server đã sẵn sàng phục vụ khách truy cập. Thư mục hỗ trợ sites-available sẽ giữ tất cả các file khối server của ta , trong khi folder sites-enabled sẽ giữ các softlink đến các khối server mà ta muốn xuất bản. Ta có thể tạo cả hai folder bằng lệnh :

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

Lưu ý: Bố cục folder này được giới thiệu bởi những người đóng góp Debian, nhưng ta đưa nó vào đây để tăng tính linh hoạt trong việc quản lý các khối server của ta (vì việc bật và tắt tạm thời các khối server theo cách này dễ dàng hơn).

Tiếp theo, ta nên yêu cầu Nginx tìm kiếm các khối server trong folder sites-enabled . Để thực hiện điều này, ta sẽ chỉnh sửa file cấu hình chính của Nginx và thêm một dòng khai báo folder tùy chọn cho các file cấu hình bổ sung:

sudo nano /etc/nginx/nginx.conf 

Thêm các dòng này vào cuối 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 kiếm các khối server trong folder sites-enabled , trong khi dòng thứ hai tăng dung lượng bộ nhớ được cấp cho phân tích domain (vì ta hiện đang sử dụng nhiều domain ).

Khi thực hiện xong những thay đổi này, bạn có thể lưu file . Bây giờ ta đã sẵn sàng để tạo file khối server đầu tiên của bạn .

Tạo file khối server đầu tiên

Theo mặc định, Nginx chứa một khối server được gọi là default.conf mà ta có thể sử dụng làm mẫu cho các cấu hình của riêng mình. Ta có thể tạo file cấu hình khối server đầu tiên của bạn bằng cách sao chép file mặc định:

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

Bây giờ, hãy mở file mới trong editor của bạn với quyền root:

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

Lưu ý: Do cấu hình mà ta đã phác thảo, tất cả các file khối server phải kết thúc bằng .conf .

Bỏ qua các dòng comment , file sẽ trông giống 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;     } } 

Điều đầu tiên mà ta sẽ phải điều chỉnh là server_name , nó cho Nginx biết yêu cầu nào trỏ đến khối server này. Ta sẽ khai báo tên server chính, example.com , cũng như alias bổ sung cho www. example.com , do đó cả www. và không phải www. các yêu cầu được phục vụ cùng một nội dung:

server_name example.com www.example.com; 

Lưu ý: Mỗi câu lệnh Nginx phải kết thúc bằng dấu chấm phẩy ( ; ), vì vậy hãy kiểm tra từng dòng câu lệnh của bạn nếu bạn gặp sự cố sau này.

Tiếp theo, ta muốn sửa đổi root tài liệu, được chỉ định bởi chỉ thị root . Trỏ nó vào root tài liệu của trang web mà bạn đã tạo:

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

Ta cũng cần thêm lệnh try_files kết thúc bằng lỗi 404 nếu không tìm thấy tên file hoặc folder mong muốn:

try_files $uri $uri/ =404; 

Khi bạn hoàn tất, file của bạn sẽ trông giống 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à tất cả những gì ta cần cho một cấu hình cơ bản, vì vậy hãy lưu file để thoát.

Tạo file khối server thứ hai

Bây giờ ta đã cài đặt file khối server đầu tiên, ta có thể tạo file thứ hai bằng cách sao chép file đó và điều chỉnh nó nếu cần.

Bắt đầu bằng cách sao chép nó với cp :

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

Mở file mới với quyền root trong editor của bạn:

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

Đến đây bạn cần sửa đổi tất cả các phần thông tin để tham chiếu đến domain thứ hai của bạn . Khi bạn hoàn tất, file khối server thứ hai của bạn có thể trông giống như sau:

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

Khi thực hiện xong những thay đổi này, bạn có thể lưu file .

Bước 4 - Bật file khối server mới

Bây giờ ta đã tạo các file khối server của bạn , ta cần kích hoạt chúng để Nginx biết để phục vụ chúng cho khách truy cập. Để làm điều này, ta có thể tạo một softlink cho từng khối server trong folder 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 bạn hoàn tất, hãy khởi động lại Nginx để những thay đổi này có hiệu lực:

sudo systemctl restart nginx 

Bước năm - Cài đặt file server lưu trữ local (Tùy chọn)

Nếu bạn đang sử dụng domain mẫu thay vì domain thực để kiểm tra quy trình này, bạn vẫn có thể kiểm tra chức năng của khối server bằng cách tạm thời sửa đổi file hosts trên máy tính local của bạn. Điều này sẽ chặn mọi yêu cầu đối với các domain mà bạn đã cấu hình và trỏ chúng đến server VPS của bạn, giống như hệ thống DNS sẽ thực hiện nếu bạn đang sử dụng các domain đã đăng ký. Tuy nhiên, điều này sẽ chỉ hoạt động trên máy tính local của bạn và chỉ hữu ích cho mục đích thử nghiệm.

Lưu ý: Đảm bảo rằng bạn đang hoạt động trên máy tính local cho các bước này chứ không phải server VPS của bạn. Bạn cần quyền truy cập vào thông tin đăng nhập quản trị cho máy tính đó.

Nếu bạn đang sử dụng máy tính Mac hoặc Linux, hãy chỉnh sửa file hosts local của bạn với các quyền quản trị bằng lệnh :

sudo nano /etc/hosts 

Nếu bạn đang sử dụng máy Windows, bạn có thể tìm thấy hướng dẫn về cách thay đổi file server của bạn tại đây .

Các chi tiết bạn cần thêm là địa chỉ IP công cộng của VPS của bạn, theo sau là domain bạn muốn sử dụng để truy cập VPS đó:

127.0.0.1   localhost 127.0.1.1   guest-desktop server_ip_address example.com server_ip_address example2.com 

Điều này sẽ hướng bất kỳ yêu cầu nào cho example.comexample2.com trên máy tính local của ta và gửi chúng đến server của ta tại server_ip_address .

Bước sáu - Kiểm tra kết quả của bạn

Đến đây bạn đã cấu hình các khối server của bạn , bạn có thể dễ dàng kiểm tra cài đặt của bạn bằng cách truy cập các domain bạn đã cấu hình trong trình duyệt web của bạn :

http://example.com 

Bạn sẽ thấy một trang trông như thế này:

Sự thành công! Khối  server  example.com đang hoạt động!

Tương tự như vậy, nếu bạn truy cập các domain khác của bạn , bạn sẽ thấy các file bạn đã tạo cho chúng.

Nếu tất cả các trang mà bạn đã cấu hình hoạt động tốt, thì bạn đã cấu hình thành công khối server Nginx mới của bạn trên cùng một server CentOS.

Nếu bạn đã điều chỉnh file hosts của máy tính gia đình của bạn , bạn có thể cần xóa các dòng mà bạn đã thêm bây giờ mà bạn đã xác minh cấu hình của bạn hoạt động. Điều này sẽ ngăn không cho file server của bạn bị lấp đầy bởi các mục không thực sự cần thiết.

Kết luận

Đến đây, bây giờ bạn sẽ có một server CentOS 7 xử lý nhiều trang web với các domain riêng biệt. Bạn có thể mở rộng quy trình này theo các bước ta đã nêu ở trên để tạo thêm các khối server sau này. Không có giới hạn phần mềm về số lượng domain mà Nginx có thể xử lý, vì vậy hãy thoải mái tạo càng nhiều càng tốt để server của bạn có thể xử lý.


Tags:

Các tin liên quan

Cách sử dụng tệp bản đồ Salt Cloud để triển khai server ứng dụng và reverse-proxy Nginx
2014-10-27
Cách triển khai ứng dụng Rails với Passenger và Nginx trên Ubuntu 14.04
2014-10-09
Cách tạo profile AppArmor cho Nginx trên Ubuntu 14.04
2014-10-06
Cách cấu hình Nginx với SSL làm Reverse Proxy cho Jenkins
2014-09-23
Cách thiết lập nhiều trang web WordPress với Nginx trên Ubuntu 14.04
2014-08-21
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server Ubuntu 14.04
2014-08-06
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server CentOS 7
2014-08-06
Cách cài đặt Nginx trên CentOS 7
2014-07-22
Cách tạo chứng chỉ ECC trên Nginx cho Debian 7
2014-07-21
Cách thiết lập cân bằng tải Nginx với kết thúc SSL
2014-07-17