Skip to content

Instantly share code, notes, and snippets.

@russmckendrick
Created February 14, 2015 15:09
Show Gist options
  • Save russmckendrick/e32e7fa9e49b9a75ca98 to your computer and use it in GitHub Desktop.
Save russmckendrick/e32e7fa9e49b9a75ca98 to your computer and use it in GitHub Desktop.
NGINX & ngx_pagespeed
# Install the packages need to compile NGINX with ngx_pagespeed
yum install -y gcc-c++ pcre-dev pcre-devel zlib-devel make unzip openssl-devel
# Add a user for NGINX
useradd nginx
usermod -s /sbin/nologin nginx
# Download the latest version of ngx_pagespeed and psol
# See https://github.com/pagespeed/ngx_pagespeed/releases for latest release
cd /usr/local/src/
NPS_VERSION=1.9.32.3
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz
# Download the latest version of NGINX and compile
# See http://nginx.org/en/download.html for latest release
cd /usr/local/src/
NGINX_VERSION=1.7.10
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/
./configure --add-module=/usr/local/src/ngx_pagespeed-release-${NPS_VERSION}-beta --with-http_ssl_module --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log
make && make install
# Add a systemd service file
cat >> /usr/lib/systemd/system/nginx.service << NGINX_SERVICE
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
NGINX_SERVICE
# Enable and start the service
systemctl enable nginx
systemctl start nginx
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "localhost:11211";
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; }
# 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 "" "";
}
pagespeed EnableFilters canonicalize_javascript_libraries,extend_cache,extend_cache_pdfs,combine_css,combine_javascript,move_css_above_scripts,insert_dns_prefetch,rewrite_javascript,rewrite_images,prioritize_critical_css,rewrite_css,rewrite_style_attributes,convert_meta_tags,lazyload_images,collapse_whitespace,move_css_to_head,remove_comments,remove_quotes,inline_css,inline_javascript;
pagespeed UseExperimentalJsMinifier on;
pagespeed MapOriginDomain "http://media-glass.es" "https://media-glass.es";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment