Hướng dẫn thiết lập Nginx Server Blocks trên Ubuntu và CentOS

Hướng dẫn thiết lập Nginx Server Blocks trên Ubuntu và CentOS

Trong hướng dẫn này, chúng tôi sẽ cung cấp cho bạn các hướng dẫn từng bước về cách thiết lập các khối máy chủ nginx trên Ubuntu 16.04 và  CentOS 7. Các khối máy chủ Nginx thường được sử dụng để chạy nhiều trang web trên một địa chỉ IP duy nhất.

Lưu ý rằng hướng dẫn này chỉ dành cho Nginx . Nếu bạn sử dụng Apache, bạn cần phải thiết lập máy chủ ảo.

1. Cài đặt Nginx trên Ubuntu

Đảm bảo các gói hệ điều hành máy chủ của bạn được cập nhật đầy đủ:

apt-get update 
apt-get upgrade

Dừng và gỡ bỏ Apache, sau đó cài đặt nginx bằng cách sử dụng các lệnh sau:

service apache2 stop
apt-get remove apache2
apt-get autoremove
apt-get install nginx

Xóa tệp cấu hình nginx mặc định:

rm /etc/nginx/sites-enabled/default

Bật dịch vụ nginx để bắt đầu khởi động và khởi động nó:

systemctl enable nginx
systemctl start nginx.service

2. Cài đặt Nginx trên CentOS

Đảm bảo rằng tất cả các gói hệ điều hành được cập nhật bằng cách chạy các lệnh sau:

yum clean all
yum update

Dừng và loại bỏ Apache nếu nó được cài đặt và chạy trên máy chủ ảo của bạn:

systemctl stop httpd
systemctl disable httpd
yum remove httpd

Cài đặt nginx:

yum install nginx

Ngoài ra, bạn có thể muốn cài đặt PHP và MariaDB, vì vậy hãy chạy lệnh sau:

yum install nginx mariadb mariadb-server php php-fpm php-cli php-curl php-gd php-mbstring php-mysql php-xml

Chỉnh sửa tập tin cấu hình /etc/php-fpm.d/www.conf và thay đổi:

user = apache
group = apache

đến:

user = www-data
group = www-data

Chạy lệnh sau:

chown www-data: -R /var/lib/php/session

Bắt đầu các dịch vụ PHP-FPM, Nginx và MariaDB và cho phép chúng bắt đầu khởi động:

systemctl start php-fpm
systemctl start nginx
systemctl start mariadb
systemctl enable php-fpm
systemctl enable nginx
systemctl enable mariadb

3. Cấu hình nginx và thiết lập các khối máy chủ nginx

Hãy cấu hình các chỉ thị cốt lõi trong tập tin cấu hình nginx chính có tên là ‘nginx.conf’. Nó sẽ được đặt trong thư mục / etc / nginx / trên máy chủ của bạn.

vi /etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

user – người dùng sẽ sở hữu và chạy máy chủ nginx.

worker_processes – nói chung, tốt nhất là đặt cấu hình nginx worker_processes thành số CPU.

Để kiểm tra số CPU trên máy chủ của bạn, bạn có thể sử dụng lệnh sau:

#cat /proc/cpuinfo | grep processor | wc -l

4

pid – vị trí nơi nginx sẽ viết ID quá trình tổng thể của nó hoặc PID.

Nếu bạn sử dụng CentOS, hãy tạo một tệp cấu hình Nginx mới cho trang web của bạn:

vi /etc/nginx/conf.d/domain1.com.conf

Thêm nội dung sau:

server {
 server_name www.domain1.com domain1.com;
 listen 80;
 root /var/www/html/domain1.com;
 access_log /var/log/nginx/domain1.com-access.log;
 error_log /var/log/nginx/domain1.com-error.log;
 index index.php;
 
 location / {
 try_files $uri $uri/ /index.php?$args;
 }

location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
 access_log off;
 expires max;
 }

location ~ \.php$ {
 try_files $uri = 404;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 include /etc/nginx/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }

location ~ /\.ht {
 deny all;
 }

}

Nếu bạn cần lưu trữ nhiều trang web trên cùng một máy chủ (sử dụng cùng một địa chỉ IP), bạn có thể tạo một khối máy chủ mới. Tốt nhất là tạo một tệp cấu hình mới cho mỗi trang web.

Ví dụ, tạo một tệp cấu hình nginx thứ hai có tên /etc/nginx/conf.d/domain2.com.conf và thêm cùng một nội dung như /etc/nginx/conf.d/domain1.com.conf, nhưng hãy đảm bảo thay thế domain1.com với tên miền thứ hai bao gồm gốc tài liệu của trang web, vị trí tệp nhật ký, v.v. của bạn:

server {
 server_name www.domain2.com domain2.com;
 listen 80;
 root /var/www/html/domain2.com;
 access_log /var/log/nginx/domain2.com-access.log;
 error_log /var/log/nginx/domain2.com-error.log;
 index index.php;
 
 location / {
 try_files $uri $uri/ /index.php?$args;
 }

location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
 access_log off;
 expires max;
 }

location ~ \.php$ {
 try_files $uri = 404;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 include /etc/nginx/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }

location ~ /\.ht {
 deny all;
 }

}

Nếu bạn sử dụng hệ điều hành Ubuntu, hãy tạo tệp cấu hình nginx ‘domain1.com.conf’ vào thư mục / etc / nginx / sites-available.

vi /etc/nginx/sites-enabled/domain1.com.conf

(thêm cùng một nội dung như nội dung được liệt kê ở trên, tức là /etc/nginx/conf.d/domain1.com.conf trên máy chủ CentOS).

Sau đó, tạo liên kết tượng trưng từ tệp này đến thư mục hỗ trợ trang web:

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

Lặp lại quy trình tương tự và tạo tệp cấu hình mới cho tất cả các trang web khác được lưu trữ trên máy chủ.

4. Kiểm tra cấu hình Nginx

nginx -t

Nó thử nghiệm thành công, khởi động lại dịch vụ Nginx:

systemctl restart nginx

Tải các tệp trang web của bạn lên thư mục /var/www/html/domain1.com, /var/www/html/domain2.com /var/www/html/domainN.com.

Người dùng máy chủ web (www-data) cần có quyền truy cập vào thư mục /var/www/html/domain1.com, /var/www/html/domain2.com, /var/www/html/domainN.com. Nó có thể dễ dàng được thực hiện bằng cách thực hiện lệnh sau:

chown -R www-data:www-data /var/www/html/

 

PS. Nếu bạn thích bài viết này, về cách thiết lập Nginx Server Blocks trên Ubuntu và CentOS, hãy chia sẻ nó với bạn bè của bạn trên các mạng xã hội bằng cách sử dụng các nút bên trái hoặc đơn giản là để lại câu trả lời dưới đây. Cảm ơn.

Author Image
Hoàng Tùng

Trả lời

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 *