Varnish + NGINX: domain.tld/blog의 Wordpress를 위치 블록이 아닌 별도의 백엔드 서버로 사용

Varnish + NGINX: domain.tld/blog의 Wordpress를 위치 블록이 아닌 별도의 백엔드 서버로 사용

사용자가 방문할 때마다 WordPress NGINX 백엔드를 제공하고 싶습니다 www.domain.tld/blog. 나는 다음과 같이 Varnish와 함께 다양한 백엔드를 사용할 수 있다는 것을 알고 있습니다.

sub vcl_recv {
    if (req.url ~ "^/blog/") {
        set req.backend_hint = wordpress;
    } else {
        set req.backend_hint = default;
    }
}

NGINX에서 별도의 플러그인을 사용할 수 있다는 것을 알고 있지만 다음과 같은 단점이 있습니다. WordPress 및 변수에서 location ^~ /blog {}사용하면 일부 플러그인이 올바르게 작동하지 않습니다. 그래서 독립형 vhost로서 끝에 후행 없이 wordpress를 제공해야 합니다 .www.domain.tld/blogWP_HOMEWP_SITEURL/blog

그래서 제가 실제로 달성하고 싶은 것은 다음과 같습니다.

User -> www.domain.tld/blog (Varnish) -> blog.domain.tld (Wordpress NGINX)

가장 중요한 것은 의 내용이 blog.domain.tld/some-post로 표시되어야 한다는 것입니다 www.domain.tld/blog/some-post. 그러나 blog.domain.tld블로그는 콘텐츠가 중복될 수 있으므로 공개적으로 액세스해서는 안 됩니다.

그렇다면 Varnish와 NGINX를 사용하여 어떻게 blog.domain.tld/some-post"해결" 하고 동시에 전 세계에 접근할 수 없게 만들 수 있습니까?www.domain.tld/blog/some-postblog.domain.tld

이것이 이해가 되었기를 바랍니다 :)

추신: 꼭 사용할 필요는 없습니다 blog.domain.tld. 이것은 단지 예일 뿐이며 127.0.0.1:8008가상 호스트일 수도 있습니다. 상관없습니다.

답변1

다음 부분은 vcl_recv백엔드에 표시되는 URL을 다시 작성하여 원하는 것을 제공합니다.

if (req.http.host == 'domain.tld' || req.http.host == 'www.domain.tld') {
  set req.url = regsub(req.url, "^/blog/", "/");
} 

그러나 나는 그 플러그인이 무엇인지, 왜 허용되어야 하는지 이해하지 못합니다. :)

관련 정보