Category Archives: Nginx

Block user-agents and referrers with Nginx map

The code below must be included inside the http{} block: ## Add here all user agents that are to be blocked. map $http_user_agent $bad_bot { default 0; libwww-perl 1; ~(?i)(httrack|htmlparser|libwww) 1; }   ## Add here all referrers that are to blocked. map $http_referer $bad_referer { default 0; ~(?i)(babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|webcam|zippo|casino|replica) 1; }## Add here all user […]

Compress JavaScript files with Gzip

This is a list of JavaScript content-types: text/js application/javascript application/x-javascript text/javascripttext/js application/javascript application/x-javascript text/javascript Example usage in /etc/nginx/nginx.conf file: gzip on; gzip_http_version 1.1; gzip_comp_level 6; # gzip_disable "msie6"; gzip_proxied any; gzip_types text/plain text/css text/xml text/js application/xml application/javascript application/x-javascript text/javascript application/json application/xml+rss; gzip_buffers 16 8k; gzip_vary on;gzip on; gzip_http_version 1.1; gzip_comp_level 6; # gzip_disable […]

Use Nginx Helper without ngx_cache_purge module

Create a file in your website root folder named purge.php: <?php   // Allow only safe IP addresses //if ( $_SERVER[‘REMOTE_ADDR’] != "SERVER.IP.ADDRESS.HERE" ) die( "IP address not allowed!" );   echo date("Y-m-d H:i:s", time())." :: Checking cache file…<br />";   $cache_path = ‘/var/www/nginx-cache/’;   if ( !is_dir($cache_path) ) die( date("Y-m-d H:i:s", time())." :: ".htmlspecialchars($cache_path)." […]

Nginx PHP file upload size limit

Lets suppose you need to support uploading of 50MB files. Edit /etc/php5/fpm/php.ini file and set these parameters: upload_max_filesize = 50M post_max_size = 50Mupload_max_filesize = 50M post_max_size = 50M Edit /etc/nginx/nginx.conf and set this parameter: http { … client_max_body_size 50m; … }http { … client_max_body_size 50m; … } Restart PHP and Nginx services: service php5-fpm reload […]

Deny access to sensitive files with Nginx

Add this in the vhost file: # Protect specific TXT and config files location ~ /(\.|wp-config.php|readme.html|license.txt|schema.txt|password.txt|passwords.txt) { deny all; }   # Protect ~ files location ~ ~$ { access_log off; log_not_found off; deny all; }   # Protect .git files location ~ /\.git { access_log off; log_not_found off; deny all; }   # Protect […]

1 Billion hits/day with Nginx + PHP5-FPM + MySQL

Recently I tested Nginx + PHP-FPM + MySQL with service: 10,000 concurrent connections with Nginx + PHP-FPM + MySQL I have tested it again, but this time with 20,000 concurrent connections: As you can see from the above image, the rush generated 654,550 successful hits in 60 seconds and the average hit rate of […]

500 Million hits/day with Nginx + PHP-FPM + MySQL

I have recently registered to, a very interested cloud service which allows users to stress-test a web server simulating up to 50K concurrent connections, with the possibility to specify different regions to originate requests, the HTTP method, the timeout and much more. This service can help to properly configure the web server (Nginx, Lighttpd, […]

Fix the Nginx 504 gateway timeout

If you run a Nginx web server you may have already encountered the annoying 504 Gateway Time-out errors. This kind of error messages are generated most probably by the PHP max execution time limit or by the FastCGI read timeout settings. Try raising max_execution_time parameter in /etc/php5/fpm/php.ini file: max_execution_time = 600max_execution_time = 600 Then you […]

Connect() to unix:/var/run/php5-fpm.sock failed

This is an example error message found on error.log file: 2014/02/17 01:46:47 [crit] 35655#0: *12739 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: XX.XX.XX.XX, server:, request: "GET /index HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "", referrer: ""2014/02/17 01:46:47 [crit] 35655#0: *12739 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file […]

Configure FastCGI_Cache for WordPress and Nginx

Edit the vHost file of your WordPress blog as follow: # Define cache path, size, memory name, inactive time fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale updating error timeout invalid_header http_500; fastcgi_temp_path /var/cache/nginx/tmp;   # Add a custom header that shows if the page is cached or not # X-Cache: HIT = cached | […]