Question

I'm trying to use varnish with a wp 3.0.5 site with Network (Multisite), when I access the varnish URL, I get this message:

Multisite only works without the port number in the URL.

Do I need a custom VCL to make this work? I'm using the same backend config for other wordpress sites that work fine..

If I need to ask this on serverfault, let me know and I'll ask there.

Was it helpful?

Solution

I found a fix here: http://core.trac.wordpress.org/ticket/15936

You basically need to modify wp-includes/ms-settings.php like this (remove '-' lines; add the '+' line):

@@ -26,18 +26,8 @@
  if ( !isset( $current_site ) || !isset( $current_blog ) ) {
+        $_SERVER['HTTP_HOST'] = preg_replace( '|:\d+$|', '', $_SERVER['HTTP_HOST'] );
         $domain = addslashes( $_SERVER['HTTP_HOST'] );
-        if ( false !== strpos( $domain, ':' ) ) {
-               ....
-                        wp_die( /*WP_I18N_NO_PORT_NUMBER*/'Multisite only works without the port number in the URL.'/*/WP_I18N_NO_PORT_NUMBER*/ );
-                }
-        }

OTHER TIPS

that Wordpress error message is probably misleading.

Wordpress looks for the domain name in $_SERVER['HTTP_HOST'] (PHP Manual) and if it contains a port number (separated with : as usual like http://example.com:444/) it will only accept two variants: port 80 an port 443.

I assume that in your varnish configuration other ports are given and so you bump into that one.

I'm no expert with varnish, but that's where I would start to tinker with. First of all I would output that value. File in question is /wp-includes/ms-settings.php, ~ line 38. You can start adding a var_dump($_SERVER['HTTP_HOST']); before the wp_die statement.

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top