Nginx pagespeed

Материал из poiuty wiki
Перейти к: навигация, поиск

Есть один сайт, который захотелось попробовать оптимизировать (размер картинок, css, html, js).
Воспользуемся модулем от google pagespeed для nginx => готовый пакет есть на dotdeb.org

Подключаем репоризиторий, и устанавливаем/ обновляем nginx.

apt-get update 
apt-get install nginx-extras

Создаем tmp директорию для pagespeed.

mkdir /var/nginx_tmpfs

Посмотрите от какого пользователя работает ваш nginx (в файле /etc/nginx/nginx.conf)
Далее узнайте ID пользователя и группы.

# id nginx
uid=108(nginx) gid=108(nginx) groups=108(nginx),33(www-data)

Редактируем /etc/fstab => добавляем строчку (в конце файла оставьте одну пустую строчку).

tmpfs /var/nginx_tmpfs tmpfs rw,noatime,size=1024M,uid=108,gid=108,mode=0700 0 0

Монтируем и проверяем.

# mount -a
# df -h
...
tmpfs            4.0G  113M  3.9G   3% /var/nginx_tmpfs

Переходим к настройке pagespeed => открываем конфиг nginx => тот в котором описана секция *server {}*.

pagespeed EnableFilters => включить фильтр.
pagespeed DisableFilters => выключить фильтр.

Пример конфига. Подробное описание фильтров и инструкции.
Фильтр convert_jpeg_to_webp => может значительно снизить качество jpeg картинок.

server {
	...
	pagespeed on;
	pagespeed FileCachePath /var/nginx_tmpfs;
	pagespeed RewriteLevel PassThrough;
	
	pagespeed EnableFilters remove_quotes;
	pagespeed EnableFilters remove_comments;
	pagespeed EnableFilters collapse_whitespace;
	
	pagespeed EnableFilters combine_css;
	pagespeed EnableFilters rewrite_css;
	pagespeed EnableFilters move_css_to_head;
	
	pagespeed EnableFilters combine_javascript;
	pagespeed EnableFilters rewrite_javascript;
	
	pagespeed EnableFilters extend_cache;
	
	pagespeed EnableFilters recompress_images;
	pagespeed DisableFilters convert_jpeg_to_webp;
	
	pagespeed Statistics on;
	pagespeed StatisticsLogging on;
	pagespeed LogDir /var/log/pagespeed;
	pagespeed AdminPath /pagespeed_admin;

	# Ensure requests for pagespeed optimized resources go to the pagespeed handler
	# and no extraneous headers get set.
	location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
		add_header "" "";
	}
	
	location ~ "^/pagespeed_static/" { }
	location ~ "^/ngx_pagespeed_beacon$" { }
	
	location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
	location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
	location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
	location /pagespeed_console { allow 127.0.0.1; deny all; }
	location ~ ^/pagespeed_admin { allow 127.0.0.1; deny all; }
	location ~ ^/pagespeed_global_admin { allow 127.0.0.1; deny all; }
	...

Далее перезагружаем nginx.

/etc/init.d/nginx restart