Nginx as reverse proxy cache for wordpress and apache
1. Nginx installieren
* PPA Installation
* Installation mit selbstgebauten Paket
2. Allgemeine Nginx Einstellungen
Folgende Einstellungen in der Datei “/etc/nginx/nginx.conf” vornehmen:
[...]
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. Site anlegen
Anlegen der Datei “/etc/nginx/sites-available/www.mogilowski.net” mit folgenden Inhalt:
Bemerkung: Ersetze “www.mogilowski.net” mit der Domain deiner Seite und ersetze “mogfilecache” mit einen eindeutigen Namen für den Filecache der Seite.
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;
}
}
Bemerkung: In dieser Beispielkonfiguration läuft der Apache Webserver auf Port 81 auf dem selben Server (localhost). Es könnte aber ebenso ein anderer Server sein, dazu einfach “http://YOUR_APACHE_SERVER:80″ verwenden.
4. Site aktivieren
ln -s /etc/nginx/sites-available/www.mogilowski.net /etc/nginx/sites-enabled/www.mogilowski.net
Bemerkung: Bitte die default Site entfernen!
5. Purge Cache
Falls man sein eigenes Nginx Paket mit dem “proxy_cache_purge” Modul gebaut hat, kann man dies noch zu seiner Konfiguration hinzufügen: (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";
}
[...]
}
Dies kann man prima zusammen mit diesem Plugin verwenden: 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/
Install nginx on debian squeeze from PPA Install VMware Tools on Debian Squeeze


Brilliant post keep up the good work enjoy reading your posts.
Windows users could try Fastream IQ Reverse Proxy – http://www.iqproxyserver.com – for a GUI and some useful stuff…