For high traffic and high load PHP websites, Nginx is often recommended due to its efficient event-driven architecture and ability to handle concurrent connections effectively.
worker_processes auto;
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
client_max_body_size 20m;
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
server {
listen 80;
server_name example.com;
root /path/to/website;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
}
In this example, the configuration includes:
- Setting the number of worker processes and connections to handle concurrent requests efficiently.
- Enabling event-driven processing and using the epoll method for improved performance.
- Defining basic HTTP settings such as file types, sendfile, and TCP optimizations.
- Configuring keepalive and client body size limits.
- Enabling gzip compression for certain file types to reduce bandwidth usage.
- Fine-tuning FastCGI buffer sizes for improved PHP processing.
- Defining the server block for the website, including the server name and document root.
- Using the try_files directive to attempt to serve static files directly and fallback to the PHP script if not found.
- Configuring the location block for PHP files, specifying the FastCGI server address and passing relevant parameters.
- Disabling access to .htaccess files for security reasons.
Remember to adapt the configuration to match your specific PHP version, FastCGI settings, and website's document root. Additionally, it's important to monitor the server's performance and adjust the configuration as needed based on the actual load and traffic patterns of your website.