Trang chủ / Magento / Cấu hình NGINX tối ưu cho Magento
cấu hình nginx tối ưu cho magento

Cấu hình NGINX tối ưu cho Magento

Magento là mã nguồn mở tốt nhất hiện nay để xây dựng website bán hàng (TMĐT), nếu bạn đang có ý định kinh doanh online trên Internet thì mình khuyên bạn nên bắt đầu ngay với Magento, một mã nguồn được đánh giá là linh hoạt và cung cấp đầy đủ các tính năng để làm một website bán hàng chuyên nghiệp. Magento có một admin trực quan, giao diện bắt mắt, kho extension  phong phú, SEO tốt và đặc biệt hoạt động rất nhanh  khi dùng với NGINX. Hôm nay mình muốn chia sẻ cách cấu hình NGINX tối ưu cho Magento.

Ở đây mình sẽ cấu hình file NGINX trên một server mới chạy NGINX, PHP-FPM, hệ điều hành Debian 8, không sử dụng bất cứ script tự động cài đặt nào.

Xem thêm: Cài đặt LEMP ( NGINX, PHP-FPM, MARIADB) trên Debian 8

server {
    listen 80;
    server_name domain.com www.domain.com;
    root   /var/www/domain.com;

    location / {
        index index.html index.php; 
        try_files $uri $uri/ @handler; 
        expires max; ## Bật cache
	}

	## Những thư mục này nên được chặn  lại, tránh việc hacker nhòm ngó
	    location ^~ /app/                { deny all; }
	    location ^~ /includes/           { deny all; }
	    location ^~ /lib/                { deny all; }
	    location ^~ /media/downloadable/ { deny all; }
	    location ^~ /pkginfo/            { deny all; }
	    location ^~ /report/config.xml   { deny all; }
	    location ^~ /var/                { deny all; }

	## Chỉ cho phép admin được phép xem thư mục export
	## Đặt thêm password cho bảo mật hơn bằng lệnh, xem hướng dẫn bên dưới

	    location /var/export/ { 
	        auth_basic           "Restricted";
	        auth_basic_user_file /etc/nginx/abcxyz;
	        autoindex            on;
	    }

	## Vô hiệu hoá .htaccess và các file ẩn
	    location  /. { 
	        return 404;
	    }
        ## 
	    location @handler { 
	        rewrite / /index.php;
	    }

	## Chuyển các đường dẫn như /js/index.php/x.js cho PHP
	    location ~ .php/ { 
	        rewrite ^(.*.php)/ $1 last;
	    } 

	## Buộc NGINX chuyển file .php cho PHP-FPM xử lí
	location ~ .php$ { 

	## Fix lỗi 404 do try_files gây ra
        if (!-e $request_filename) { rewrite / /index.php last; } 

	## Tắt cache cho php
        expires        off;

	## Cấu hình php-fpm
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_param  HTTPS $fastcgi_https;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;

	## Mã cửa hàng bạn có thể tìm thấy trong Magento Admin > System > Manage Store > Code
        fastcgi_param  MAGE_RUN_CODE default; 
        fastcgi_param  MAGE_RUN_TYPE store;

	## Cấu hình fast-cgi phòng khi lượng visit cao
	fastcgi_buffer_size 128k;
	fastcgi_buffers 256 4k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;
	}
}

Nhớ thay lại domain.com thành tên miền /var/www/domain.com thành đường dẫn tới thư mục code của website của bạn, sau đó reload lại NGINX để áp dụng thay đổi.

nginx -t //Test xem cấu hình chuẩn chưa, nếu ok hết là được
service nginx reload // Reload lại NGINX

Giải thích phần password:

Bạn mở SSH lên gõ openssl passwd, sau đó nhập mật khẩu mà bạn muốn đặt, nhập lại lần nữa để xác nhận, nhập xong nó sẽ hiện ra cho bạn một  password đã được mã hoá từ mật khẩu mà bạn nhập ở trên

Tiếp tục gõ vào thư mục /etc/nginx tạo một file tên là abcxyz, thay abcxyz thành bất cứ cái gì bạn thích, sau đó nhập nội dung có dạng sau vào file mà bạn vừa tạo

username:password đã được mã hoá ở trên  , ví dụ stevedien:iTQFbTgnaYmFs

xem ảnh minh hoạ bên dưới

cấu hình nginx magento
## Nếu bạn thấy phần password này khó thì có thể bỏ qua, xoá đoạn sau trong file cấu hình trên

location /var/export/ { 
	        auth_basic           "Restricted";
	        auth_basic_user_file /etc/nginx/abcxyz;
	        autoindex            on;
	    }

Lưu ý: Nếu  bạn sử dụng extension Fooman Speedster để tăng tốc Magento thì cần thêm đoạn sau vào file hình trên

rewrite ^/minify/([0-9]+)(/.*.(js|css))$ /lib/minify/m.php?f=$2&d=$1 last;
rewrite ^/skin/m/([0-9]+)(/.*.(js|css))$ /lib/minify/m.php?f=$2&d=$1 last;

location /lib/minify/ {
allow all;
}

Chúc các bạn thành công!

Nếu bạn thấy có ích, hãy subcribe blog của tôi để nhận thêm nhiều tút hay qua email nữa nhé!