ユーザーが訪問するたびに、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/blog
WP_HOME
WP_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-post
blog.domain.tld
これが理解できたことを願います:)
PS: 私にとっては必ずしも使用する必要はありませんblog.domain.tld
。これは単なる例であり、vhost でも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/", "/");
}
しかし、それらのプラグインが何であるか、そしてなぜそれらを許容する必要があるのか理解できません :)