Multisite behind Varnish
-
16-10-2019 - |
문제
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.
해결책
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*/ );
- }
- }
다른 팁
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.