Cài đặt Nginx và Varnish làm Proxy Apache

Nginx và Varnish làm Proxy Apache – Sự kết hợp hoàn hảo cho Sentora

Sentora khi mới cài xong nó rất yếu, khả năng chịu tải không cao, chạy ngốn RAM – điểm yếu của apache so với nginx. Cần được tối ưu lại khá nhiều từ php đến mysql cũng như là hệ thống cache.

NGINX là một webserver mới với nhiều ưu điểm về tốc độ xử lý, cũng như là độ chiếm dụng tài nguyên ít hơn, tuy nhiên vẫn không có được một số cái ưu việt mà chỉ apache mới có (ví dụ: .htaccess)

Varnish là một hệ thống cache được dùng để tăng tốc server, đặc biệt là với những hệ thống lớn, có trafic nhiều. Varnish hoạt động bằng cách cache nội dung page lên bộ nhớ RAM và ngay lập tức trả lại cho người dùng khi có yêu cầu mà không phải thông qua PHP hay MySQL xử lý.

Do sử dụng Memory để cache nên tốc độ truy xuất sẽ nhanh hơn rất nhiều so với Disk truyền thống, kể cả SSD. Bạn thử tưởng tượng với những website có lượng lớn dữ liệu, phương pháp cache thông thường sẽ tạo ra hàng vạn file .html trên ổ cứng, lúc đó PHP hoặc Nginx xử lý sẽ cực kỳ vất vả, tốn tài nguyên.

Với những lý do như trên, hôm nay mình xin hướng dẫn cách kết hợp Varnish + Nginx làm FrontEnd chịu tải cho Apache – Cái kiểu này giống với cấu hình tối ưu nhất của CWP các bạn nhỉ.

Lưu ý: Áp dụng cho Sentora cài trên Centos 7 64bit – PHP 5.6/7.0 – Mariadb 10.1

Mô hình cài đặt Nginx và Varnish làm Proxy Apache

1. Đổi port Apache

Để cài nginx làm proxy cho Sentora chúng ta cần đổi port mặc định của Apache.

Chúng ta chạy lệnh bên dưới để đổi port apache thành port 8080 (port backend của nginx):

setso --set apache_port 8080
php -q /etc/sentora/panel/bin/daemon.php

Để chắc ăn hơn, chúng ta vào /etc/sentora/configs/apache rồi mở file httpd-vhosts.conf lên, sửa toàn bộ port 80 thành port 8080

2. Cài đặt Nginx Proxy cho sentora
Cài đặt nginx:

service httpd stop
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx

Cấu hình nginx proxy

Sau khi cài xong, chúng ta sẽ cấu hình nginx làm proxy cho sentora. Chúng ta chạy lệnh sau:

nano /etc/nginx/nginx.conf

Sau đó xóa hết code trong đó. Rồi thêm đoạn code bên dưới vào

user nobody;
worker_processes 2; # Đổi theo số CPU
events {
 worker_connections 2048; # Lấy 1024x CPU
}
 
http {
 server_names_hash_max_size 2048;
 server_names_hash_bucket_size 512;
 server_tokens off;
 
 include mime.types;
 default_type application/octet-stream;
 
 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 10;
 
 # Bật gzip
 gzip on;
 gzip_min_length 1100;
 gzip_buffers 4 32k;
 gzip_types text/plain application/x-javascript text/xml text/css;
 
 # Other configurations
 ignore_invalid_headers on;
 client_max_body_size 128m;
 client_header_timeout 3m;
 client_body_timeout 3m;
 send_timeout 3m;
 connection_pool_size 256;
 client_header_buffer_size 4k;
 large_client_header_buffers 4 32k;
 request_pool_size 4k;
 output_buffers 4 32k;
 postpone_output 1460;
 
 # Cache most accessed static files
 open_file_cache max=10000 inactive=10m;
 open_file_cache_valid 20m;
 open_file_cache_min_uses 1;
 open_file_cache_errors on;
 
 # virtual hosts includes
 server {
 listen 8081 default_server;
 location / {
      proxy_set_header Host $host;
      proxy_pass http://127.0.0.1:8080; 
      client_body_buffer_size 128k;
      proxy_connect_timeout 90;
      proxy_send_timeout 90;
      proxy_read_timeout 90;
      proxy_buffer_size 4k;
      proxy_buffers 4 32k;
      proxy_busy_buffers_size 64k;
      proxy_temp_file_write_size 64k;
      }
 location ~ /\.ht {
       deny all;
     }
 }
}

Sau khi nhập xong thì nhấn Ctrl + O để save lại và Ctrl + X để đóng file

Ở bài nginx làm proxy cho apache mình set port listern của nginx là 80 vì nó làm FrontEnd, nhưng lần này ta nginx sẽ đúng ở giữa, nên sẽ set nó port 8081 nhé

3. Cài đặt Varnish 4
Lệnh cài đặt varnish cache:

sudo yum install -y epel-release
sudo yum install -y varnish

Cấu hình Varnish Cache
Bạn dùng lệnh

sudo nano /etc/varnish/varnish.params

Sửa VARNISH_LISTEN_PORT=6081 thành VARNISH_LISTEN_PORT=80 Ctrl + O để save lại và Ctrl + X để đóng file

Tiếp theo là sửa file default.vcl. Bạn dùng lệnh

sudo nano /etc/varnish/default.vcl

Sau đó sửa các thông số như bên dưới nhé:

backend default {
	.host = "127.0.0.1";
	.port = "8081"; 
}
sub vcl_backend_response {
       	set beresp.ttl = 600s;
        set beresp.grace = 600s;
}

Cuối cùng là khởi động lại các service và set khởi động chung với hệ thống

# Khởi động service
sudo systemctl start varnish
sudo systemctl start nginx
sudo systemctl start httpd
# set service khởi động chung hệ thống
sudo systemctl enable varnish
sudo systemctl enable nginx

Như vậy chúng ta đã thiết lập xong Nginx và Varnish làm Proxy Apache trên Sentora. Server của bạn sẽ chịu tải cao hơn, và chạy nhẹ nhàng hơn

Lưu ý: Ram ít nhất 1GB trở mới chơi cái này được nha, vì cái này chủ yếu sử dụng

1 comment

Leave a comment

Your email address will not be published. Required fields are marked *