CentOS :: Setting Varnish, Nginx for WordPress
:: How to setting Varnish and Nginx for WordPress cms in Linux CentOS
+ Enable Varnish and Nginx repository
rpm --nosignature -i //repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm rpm -Uvh //nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm
+ Installing Varnish and Nginx
yum install varnish nginx php-fpm
+ Configure Nginx for WordPress
make sure change Nginx port services to 8080.
vi /etc/nginx/conf.d/blackonsole.org.conf
setup some like this:
server { listen 8080; server_name blackonsole.org; root /var/www/html; index index.php; access_log /var/log/nginx/blackonsole.org.access_log; error_log /var/log/nginx/blackonsole.org.error_log; # permalink location / { try_files $uri $uri/ /index.php?$args; } # php-script handler location ~ \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }
+ Configure Varnish daemon
vi /etc/sysconfig/varnish
setting DAEMON_OPTS configuration like this:
DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -u varnish -g varnish \ -S /etc/varnish/secret \ -s file,/var/lib/varnish/varnish_storage.bin,2G"
+ Configure Varnish for Nginx and WordPress
vi /etc/varnish/default.vcl
setup like this:
backend default { .host = "127.0.0.1"; .port = "8080"; .connect_timeout = 600s; .first_byte_timeout = 600s; .between_bytes_timeout = 600s; } sub vcl_recv { if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { # Non-RFC2616 or CONNECT which is weird. */ return (pipe); } if (req.request != "GET" && req.request != "HEAD") { # We only deal with GET and HEAD by default */ return (pass); } # Remove has_js and Google Analytics cookies. set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+)=[^;]*", ""); # Remove a ";" prefix, if present. set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); # Remove empty cookies. if (req.http.Cookie ~ "^\s*$") { unset req.http.Cookie; } if (req.http.Authorization || req.http.Cookie) { # Not cacheable by default */ return (pass); } # Skip the Varnish cache for install, update, and cron if (req.url ~ "install\.php|update\.php|cron\.php") { return (pass); } # Let's have a little grace set req.grace = 30s; return (lookup); }
+ Starting Varnish and Nginx
/etc/init.d/nginx start /etc/init.d/varnish start
+ Testing
curl -I blackonsole.org
you will got result some like this:
HTTP/1.1 200 OK Server: nginx/1.4.1 Content-Type: text/html; charset=UTF-8 X-Powered-By: PHP/5.3.23 Set-Cookie: PHPSESSID=etubvjn80o5ar99sdferS22322ss; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache X-Pingback: //blackonsole.org/xmlrpc.php Content-Length: 82521 Accept-Ranges: bytes Date: Mon, 15 Jul 2013 02:50:39 GMT X-Varnish: 1951812197 Age: 0 Via: 1.1 varnish Connection: keep-alive
see on these line:
Server: nginx/1.4.1 X-Varnish: 1951812197
My domain shows another domain on the server when I follow these steps./