好的,我会尽力解释这一点。我已成功设置到服务器块(网站 A)/blog/
上的子目录位置,该位置成功在子域服务器块(网站 B)example.com
上显示我的博客,网址为.blog.example.com.au
example.com/blog/
但是,当我单击主页上的任何链接example.com/blog/
时,当它应该链接到网站 B 上的文章时,它会显示网站 A 的 404。
期望的行为:
显示时example.com/blog/article
的链接blog.example.com/article
example.com/blog/article
实际行为:
显示404时example.com/blog/article
的链接example.com/article
example.com/article
我想确保出现在通过位置块/blog/
传递到网站 B 的每个请求上。/blog/
这是我当前的网站 A 为网站 B 上的博客提供服务的服务器块:
server {
server_name example.com;
...
location ^~ /blog/ {
proxy_pass https://blog.example.com.au/;
proxy_set_header Host blog.example.com.au;
}
# This is needed to correctly serve static files for Website B and not have same 404 behaviour as explained above
location /assets/ {
proxy_pass https://blog.example.com.au/assets/;
}
# This is needed to correctly serve static files for Website B and not have same 404 behaviour as explained above
location /content/ {
proxy_pass http://blog.example.com.au/content/;
}
}
如果它有助于网站 A 和 B 都被反向代理并在同一个 conf 文件中完美地工作:
upstream Website_A {
server Website_A:8000;
}
upstream Website_B {
server Website_B:2368;
}
...
使用正确的基本 URL 配置您的后端,以便生成正确的链接。
由于您似乎将 Ghost 用于您的博客,因此该选项称为
url
.当然,将它直接代理给ghost而不是两次代理它会更有意义。