Drupal i NGINX – czyli przyśpiesz swoją stronę :)

ng_dr
Witajcie.
Wczoraj opisałem jak uruchomić System CMS Drupal na lighttpd – a dziś na NGINX!

1. V-host

server { 
	listen       80;
	server_name  www.site.pl;
	return       302 http://site.pl$request_uri;
}

server {
	listen   80;
	server_name  site.pl;
	access_log  /var/log/site.pl/site.pl.access.log;
	error_log /var/log/site.pl/site.pl.error.log error;
	root /home/www/public_html;
	index index.php;
    	error_page 500 501 502 503 504 /5xx.html; location = /5xx.html { root /home/www/document_errors; internal; }
	error_page 403 /403.html; location = /403.html { root /home/www/document_errors; internal; }

	
	location ~* files/styles {
	access_log off;
	expires 30d;
	try_files $uri @drupal;
	}

	location ~* ^.+.(xsl|xml|js|css|txt)$ {
	access_log off;
	expires 1d;
	try_files $uri @drupal $uri/ =404;
	}

	location @drupal {
	try_files $uri $uri/ /index.php?q=$uri&$args;
	include fastcgi.conf;
 	}

	location / {
        try_files $uri $uri/ @drupal;
        index  index.php index.html;    
	}
			
	location @drupal {
        rewrite ^/(.*)$ /index.php?q=$1 last;
	}

	## Upload in progress	
	#location ~ (?<upload_form_uri>.*)/x-progress-id:(?<upload_id>\w*) {
	#rewrite ^ $upload_form_uri?X-Progress-ID=$upload_id;
	#}
	#location ^~ /progress {
	#upload_progress_java_output;
	#report_uploads uploads;
	#}

	# HOTLINKI
	#location ~* \.(gif|png|jpe?g)$ {
	#expires 7d;
	#add_header Pragma public;
	#add_header Cache-Control "public, must-revalidate, proxy-revalidate";
	#valid_referers none blocked ~.google. ~.bing. ~.yahoo. ~.unitra. ~.yandex. ~.archive. ~.unitraklub. ~unitraklub. ~.cloudflare. server_names ~($host);
	#if ($invalid_referer) {
	#rewrite (.*) http://nie-hotlinkuj.site.pl/img.jpg redirect;
	#}
	#}

	## WYŁĄCZNIE WIDOKU NA PLIKI Z "."
	location ~ /\.ht { deny  all;  }

	location = /robots.txt {
	access_log off;
	try_files $uri /index.php?q=$uri;
	}

	location = /favicon.ico {
    	expires 30d;
    	try_files /favicon.ico @empty;
	}

	location @empty {
	expires 30d;
	empty_gif;
	}
	
	# GENEROWANIE MINIATUREK
	location ^~ /files/imagecache/ {
	index index.php index.html;
	if (!-e $request_filename) {
	rewrite ^/(.*)$ /index.php?q=$1 last;
	break;
	}
	}
	
	# WON DLA CIEKAWSKICH
	location ~* ^/wp-admin/?  { rewrite ^ http://whatismyipaddress.com/ip/$remote_addr redirect; }
	location ~* ^/administrator/?  { rewrite ^ http://whatismyipaddress.com/ip/$remote_addr redirect; }

	## WYŁĄCZENIE LOGOWANIA PLIKOW STATYCZNYCH
	include /etc/nginx/staticfiles.conf;
		
	## PHP-FPM
	location ~ .php$ {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 90;
        fastcgi_send_timeout 750;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
	}
}

Lub gotowiec 🙂

wget http://pliki.linuxarz.pl/10-2015/nginx-drupal.conf -O /etc/nginx/conf.d/nginx-drupal.conf
  • Upload in progress – zakomentowane (jeśli twój nginx ma to wkompilowane to włącz)
  • Wyłączona funkcja wyłączonego hotlinkowania – jeśli chce tę funkcję to od-komentuj linijki.
  • Pamiętaj aby wykonać edycję z odpowiednim adresem do witryny oraz ścieżek do katalogu/logów itp. 😉

2. Dodatkowy plik z konfiguracją w której wyłączamy logowanie plików statecznych.

wget http://pliki.linuxarz.pl/10-2015/staticfiles.conf -O /etc/nginx/staticfiles.conf

Powiem szczerze! DZIAŁA:)) – zobacz: unitraklub.pl

P.S Czy ja aż tak nie lubię Apache/2 ? 😀