Quiero ofrecer un backend de WordPress NGINX cada vez que el usuario lo visite www.domain.tld/blog
. Sé que puedo usar diferentes servidores con Varnish como este:
sub vcl_recv {
if (req.url ~ "^/blog/") {
set req.backend_hint = wordpress;
} else {
set req.backend_hint = default;
}
}
Sé que podría usar uno separado location ^~ /blog {}
en NGINX, pero esto tiene la siguiente desventaja: si uso www.domain.tld/blog
en WordPress WP_HOME
y WP_SITEURL
variables algunos complementos no funcionan correctamente. Entonces necesito entregar WordPress sin el final /blog
al final como un vhost independiente.
Entonces, lo que realmente quiero lograr es:
User -> www.domain.tld/blog (Varnish) -> blog.domain.tld (Wordpress NGINX)
Lo principal es que el contenido blog.domain.tld/some-post
debe mostrarse como www.domain.tld/blog/some-post
. Sin embargo, blog.domain.tld
el blog no debe ser accesible públicamente ya que esto significaría contenido duplicado.
Entonces, ¿cómo podría blog.domain.tld/some-post
"resolver" www.domain.tld/blog/some-post
con Varnish y NGINX y al mismo tiempo hacer que blog.domain.tld
el mundo no sea accesible?
Espero que esto haya sido comprensible :)
PD: No es necesario que lo use blog.domain.tld
; esto es solo un ejemplo, también podría ser un 127.0.0.1:8008
vhost, no importa.
Respuesta1
La siguiente pieza vcl_recv
le proporcionará lo que desea al reescribir la URL que verá el backend:
if (req.http.host == 'domain.tld' || req.http.host == 'www.domain.tld') {
set req.url = regsub(req.url, "^/blog/", "/");
}
Sin embargo, no entiendo qué son esos complementos y por qué deberían tolerarse :)