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.com
và example2.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:
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ý.
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 Nginx2014-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