Tips và Tricks cấu hình NginxNginx Tip 1. Tổ chức các Nginx config filesThông thường các file config được đặt trong Show
Có thể tổ chức các config files giống như cài đặt Apache trên Ubuntu/Debian:
Virtualhost files có 2 thư mục, vì thư mục Bạn cần thêm đoạn include các files config được thêm trong
Nginx Tip 2. Xác định Nginx worker_processes và worker_connectionsThiết lập mặc định là ổn đối với worker_ processes và worker_connections, nhưng các giá trị này có thể tối ưu thêm một chút: max_clients = worker_processes * worker_connections Chỉ cần thiết lập Nginx cơ bản có thể xử lý hàng trăm kết nối đồng thời:
Thông thường Worker Processes
Để kiểm tra xem bạn có bao nhiêu processor cores, hãy chạy command sau:
Ở đây có 4 cores và worker_processes có thể được cấu hình như sau:
Worker ConnectionsCá nhân tôi gắn bó với 1024 worker connection, bởi vì tôi không có lý do gì để nâng giá trị này. Nhưng nếu ví dụ 4096 kết nối mỗi giây là không đủ thì có thể cố gắng nhân đôi số này và đặt 2048 connections cho mỗi process. Cấu hình cuối cùng của worker_processes có thể như sau:
Nginx Tip 3. – Ẩn Nginx Server Tokens / Ẩn Nginx versionVới lý do bảo mật, ẩn server tokens / ẩn Nginx version, đặc biệt nếu bạn chạy phiến bản cũ của Nginx. Việc này vô cùng đơn giản, bạn chỉ cần set
Nginx Tip 4. – Nginx Request / Upload Max Body Size (client_max_body_size)Nếu bạn muốn cho phép người dùng tải lên một cái gì đó qua HTTP thì bạn có thể tăng post size. Nó được thực hiện bằng việc thay đổi giá trị
Nếu bạn gặp phải lỗi sau đây,
bạn nên biết rằng
Nginx Tip 5. – Nginx Cache Control cho Static Files (Browser Cache Control Directives)Browser caching là cần thiết nếu bạn muốn tiết kiệm resources và bandwith. Nó là đơn giản để thiết lập với Nginx, tắt log (access log và not found log) và set expires headers thành 360 ngày.
Nếu bạn muốn thêm các header đặc biệt cho từng loại file hoặc thời gian expires khác nhau, bạn có thể cấu hình cho từng loại file. Nginx Tip 6. – Nginx Pass PHP requests tới PHP-FPMTại đây bạn có thể sử dụng tpc/ip stack mặc định hoặc sử dụng Unix socket connection trực tiếp. Bạn cũng phải thiết lập PHP-FPM listen nghe chính xác cùng một ip:port hoặc unix socket (với Unix socket cũng phải có socket permission). Thiết lập mặc định là sử dụng ip:port (127.0.0.1:9000) tất nhiên bạn có thể thay đổi ips và ports mà PHP-FPM listens. Đây là cấu hình rất cơ bản với ví dụ về Unix socket:
Điều đó có nghĩa là bạn có thể chạy PHP-FPM và Nginx trên 2 server khác nhau. Nginx Tip 7. – Ngăn truy cập tới các File ẩn với NginxNó rất phổ biến rằng server root hoặc các public directory khác có các file ẩn, bắt đầu bằng dấu chấm (.) và thông thường chúng không dành cho người dùng trang web. Public directory có thể chứa các version control files và directories, như .svn, IDE properties files và .htaccess files. Sau đây là đoạn config từ chối truy cập và tắt log cho tất cả các file ẩn.
Tips và tricks cấu hình PHP-FPMPHP-FPM Tip 1. – PHP-FPM Configuration filesThông thường các PHP-FPM configuration files được đặt trong
PHP-FPM Tip 2. – Tinh chỉnh PHP-FPM Global ConfigurationThiết lập
Những cái này nghĩa là gì? Nếu 10 PHP-FPM child processes exit với SIGSEGV hoặc SIGBUS trong vòng 1 phút thì PHP-FPM sẽ tự động restart. Cấu hình này cũng đặt giới hạn thời gian 10 giây cho các child processes để chờ phản ứng trên các tín hiệu từ master. PHP-FPM Tip 3. – PHP-FPM Pools ConfigurationVới PHP-FPM, có thể sử dụng các pools khác nhau cho các trang web khác nhau và phân bổ resources rất chính xác và thậm chí sử dụng các groups và users khác nhau cho mỗi pool. Dưới đây là ví dụ cấu trúc file cho các PHP-FPM pools cho ba trang web khác nhau (hoặc thực tế là ba phần khác nhau của cùng một trang web):
Ví dụ cấu hình cho các pools như sau: /etc/php-fpm.d/site.conf
/etc/php-fpm.d/blog.conf
/etc/php-fpm.d/forums.conf
Đây là chỉ là ví dụ cho config nhiều site pools khác nhau. PHP-FPM Tip 4. – PHP-FPM Pool Process Manager (pm) ConfigurationCách tốt nhất để sử dụng PHP-FPM process manager là sử dụng dynamic process management, vì vậy các PHP-FPM processes chỉ được bắt đầu khi cần. Đây là thiết lập kiểu gần giống với thiết lập Nginx worker_processes và worker_connections. Vì vậy, giá trị rất cao không có nghĩa là tất cả mọi thứ tốt. Mọi process đều ăn bộ nhớ và tất nhiên nếu trang web có lưu lượng truy cập rất cao và rất nhiều bộ nhớ thì các giá trị cao hơn sẽ được chọn, nhưng các server, như bộ nhớ VPS (Virtual Private Servers) thường bị giới hạn ở 256 Mb, 512 Mb, 1024 Mb. RAM thấp này đủ để xử lý lưu lượng truy cập rất cao (thậm chí hàng chục yêu cầu mỗi giây), nếu nó được sử dụng một cách khôn ngoan. Thật tốt khi kiểm tra có bao nhiêu PHP-FPM processes một máy chủ có thể xử lý dễ dàng, trước tiên hãy khởi động Nginx và PHP-FPM và tải một số trang PHP, tốt nhất là tất cả các trang nặng nhất. Sau đó kiểm tra mức sử dụng bộ
nhớ cho mỗi ví dụ về PHP-FPM processes bằng command Vì vậy, giá trị Cấu hình ví dụ có thể như sau:
Tham khảo bài viết gốc tại đây |