(Hướng dẫn cài đặt Nginx + Apache + memcache để tăng tốc website và tối ưu server). Nginx và Apache là sự kết hợp hoàn hảo và phổ biến giúp tăng tốc website, tăng khả năng chịu tải và tối ưu cho server nhờ tận dụng được ưu thế của cả 2 web server Apache (xử lý trang động: php) và Nginx (xử lý trang tĩnh: html, zip, image,…)
Tại sao phải cài Nginx + Apache ?
Người ta thường sử dụng Apache bởi vì Apache tỏ ra tốt hơn Nginx trong việc phục vụ các trang web động (dynamic page). Nhưng vì tính đa dụng nên Apache có rất nhiều thành phần “thừa” khiến cho Web Server của chúng ta trở nên chậm chạp. Trong khi Nginx là một máy chủ web nhỏ nhẹ, hiệu năng cao, miễn phí.
Dùng Nginx như là một Proxy ngược cho Apache là một trong những cách thông thường nhất để sử dụng Nginx giúp tăng tốc website và tăng khả năng chịu tải của server. Nginx sẽ chạy ở phía trước (front-end) phục vụ port 80 xử lý các trang web tĩnh, còn Apache sẽ chạy ở phía sau (back-end) lắng nghe trên port 81. Các Client truy vấn tới Web Server sẽ theo dạng:
Client <—–> Nginx <—–> Apache.
Hướng dẫn cài đặt Nginx và Apache trên Lunix/Unix web server
1. Hướng dẫn cài đặt Apache web server
yum install httpd httpd-devel -y
2. Cấu hình Reverse Proxy trên Apache
– Chỉnh sửa Listen directive ở httpd.conf
nano -w /etc/httpd/conf/httpd.conf
– Sau đó tìm:
Listen 80
Và thay đổi thành:
Listen 81
– Tiếp theo, di chuyển đến cuối file này và thêm đoạn mã sau:
NameVirtualHost 127.0.0.1:81# Define Server document root
DocumentRoot /var/www/html/
# Define the virtual host
<VirtualHost 127.0.0.1:81>
ServerName www.yourwebsite.com
ServerAlias yourwebsite.com
DocumentRoot /var/www/yourwebsite.com
<Directory “/var/www/yourwebsite.com”>
Options FollowSymLinks -Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine on
</VirtualHost>
Thay thế yourwebsite.com với tên miền website của bạn, và /var/www/yourwebsite.com với thư mục gốc chứa website.
– Khởi động lại httpd bằng lệnh sau:
service httpd restart
3. Hướng dẫn cài đặt Nginx
mkdir /root/temp;
cd /root/temp
wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -i nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install nginx -y
4. Cấu hình Nginx
nano -w /etc/nginx/nginx.conf
Cấu hình nội dung như sau:
user nobody;
worker_processes 4;
error_log logs/error.log crit;worker_rlimit_nofile 8192;
events {
worker_connections 1024; # you might need to increase this setting for busy servers
use epoll; # Linux kernels 2.6.x change to epoll
}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;# Gzip on
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 8m;
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 2m;
open_file_cache_min_uses 1;
open_file_cache_errors on;# virtual hosts includes
include “/etc/nginx/conf.d/*.conf”;}
5. Cấu hình Reverse Proxy cho Nginx
– Tạo file cấu hình cho tên miền:
nano -w /etc/nginx/conf.d/yourwebsite.com.conf
Paste đoạn mã sau vào:
server {
listen 80;
server_name yourwebsite.com yourwebsite.com;
access_log off;
error_log logs/yourwebsite.com-error_log crit;location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {
root /var/www/yourwebsite.com;
expires 365d;
}location / {
client_max_body_size 10m;
client_body_buffer_size 128k;proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_connect_timeout 30s;proxy_redirect http://www.yourwebsite.com;
proxy_redirect http://yourwebsite.com;proxy_pass ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nhớ thay thế yourwebsite.com bằng tên miền của bạn và /var/www/yourwebsite.com bằng đường dẫn đến thư mục root của website của bạn.
6. Cài đặt mod_rpaf
Mod_rpaf sẽ giúp Apache nhận biết IP thực của Clients khi kết nối thông qua proxy (nêú không bạn sẽ chỉ thấy địa chỉ clients là 127.0.0.1 khi xem log trên apache):
mkdir /root/temp; cd /root/temp
wget https://github.com/y-ken/mod_rpaf/archive/master.zip
unzip master.zip
cd mod_rpaf-master/
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Khi đã cài đặt chúng ta cần cấu hình rpaf bằng cách tạo 1 file cấu hình như bên dưới:
nano -w /etc/httpd/conf.d/rpaf.conf
Và cấu hình như bên dưới:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 YOUR.SERVER.IP
Thay YOUR.SERVER.IP bằng địa chỉ IP server của bạn.
– Restart httpd:
service httpd restart
Kiểm tra Reverse Proxy của Nginx
curl -I http://www.yoursite.com/
Nếu đúng bạn sẽ nhận được kết quả tương tự như sau:
Nếu bạn thấy Server: Nginx trong phần kết quả, có nghĩa là trang web của bạn đang sử dụng Nginx ở trước, và các tập tin động (php) được xử lý bởi Apache đứng phía sau. Cần một thử nghiệm chính xác hơn hơn? Hãy thử tắt Apache:
service httpd stop
Sau đó cố gắng truy cập trang web của bạn trên trình duyệt hoặc sử dụng curl, có thể bạn sẽ nhận được một lỗi : 502 bad gateway error, và điều đó có nghĩa proxy của bạn là thực sự làm việc. Bây giờ, hãy khởi động Apache trở lại:
service httpd start
Chúc bạn thành công !
Tham khảo nhiều nguồn trên internet