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 mariadbsystemctl 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.confuser 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.