1. Install Nginx
* Install from PPAPPA Installation
* Install using self build packagesInstallation mit selbstgebauten Paket
2. General Nginx Settings
Edit „/etc/nginx/nginx.conf“ and modify or insert the following settings:
[...]
http {
[...]
# Gzip Settings
gzip on;
gzip_disable "msie6";
gzip_buffers 32 8k;
gzip_comp_level 6;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/html text/css image/x-icon application/x-javascript application/javascript text/javascript application/atom+xml application/xml ;
# Proxy Settings
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 30;
proxy_read_timeout 120;
proxy_send_timeout 120;
proxy_cache_key "$scheme://$host$request_uri";
[...]
}
[...]
3. Create Site
Create „/etc/nginx/sites-available/www.mogilowski.net“ with following content:
Note: Replace „www.mogilowski.net“ with your site and replace „mogfilecache“ with a unique name for the filecache for this site.
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=mogfilecache:180m max_size=500m;
server {
proxy_cache_valid 200 3h;
listen 80;
server_name www.mogilowski.net;
access_log /var/log/nginx/mogilowski.proxied.log;
error_log /var/log/nginx/mogilowski.proxied.log crit;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
# If logged in, don't cache.
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}
proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
proxy_cache mogfilecache;
proxy_pass http://127.0.0.1:81;
}
location ~* wp\-.*\.php|wp\-admin {
proxy_pass http://127.0.0.1:81;
}
location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
proxy_cache_valid 200 6h;
expires max;
proxy_cache mogfilecache;
proxy_pass http://127.0.0.1:81;
}
location ~* \/[^\/]+\/(feed|\.xml)\/? {
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}
proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
proxy_cache_valid 200 1h;
proxy_cache mogfilecache;
proxy_pass http://127.0.0.1:81;
}
# No access to .htaccess files.
location ~ /\.ht {
deny all;
}
}
Note: In this example configuration the apache webserver runs on port 81 on the localhost. But it can also be a different machine on the internet. Just use „http://YOUR_APACHE_SERVER:80“ instead.
4. Enable site
ln -s /etc/nginx/sites-available/www.mogilowski.net /etc/nginx/sites-enabled/www.mogilowski.net
Note: Please remove the default site from sites-enabled.
5. Purge Cache (optional)
If you have build your own nginx package with the „proxy_cache_purge“ module, you can add this to your server config. (http://labs.frickle.com/nginx_ngx_cache_purge/)
server {
[...]
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge mogfilecache "$scheme://$host$request_uri";
}
[...]
}
You can use this together with this plugin: http://wordpress.org/extend/plugins/nginx-proxy-cache-purge
6. Links
* http://wp-performance.com/2010/10/nginx-reverse-proxy-cache-wordpress-apache/
* http://wiki.nginx.org/Wordpress
* http://wordpress.org/extend/plugins/nginx-proxy-cache-integrator/
* http://www.djm.org.uk/wordpress-nginx-reverse-proxy-caching-setup/
* http://zachbrowne.com/2011/how-to-build-the-fastest-wordpress-website-with-apache-ngnix-reverse-proxy-php-cgi-google-pagespeed/
Massachusetts catering
26 Mai 2011Brilliant post keep up the good work enjoy reading your posts.
Shawn
29 Nov. 2011Windows users could try Fastream IQ Reverse Proxy – http://www.iqproxyserver.com – for a GUI and some useful stuff…
sebastian
29 Nov. 2011