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
ad vui lòng hướng dẫn luôn nếu website chạy port 443