无法使用 NGINX 代理创建正确的 URL 结构

无法使用 NGINX 代理创建正确的 URL 结构

我有两个应用程序。一个是 nextjs 应用程序,另一个是 WordPress 应用程序。两者都在不同的实例中运行。

为了从我的主站点提供我的 WordPress 博客,例如https://example.com/blog,我已将以下代理添加到我的主要站点的 nginx 服务器配置中,

location ^~ /blog/ {
    http2_push_preload on;
    proxy_pass https://blog.exmaple.com/;
    proxy_http_version 1.1;
    proxy_set_header Host blog.example.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_cache_bypass $http_upgrade;
}

如果我单击管理门户中的任何保存按钮,那么它会在下次加载时从 URL 中删除“博客”字样,例如“https://exmaple.com/wp-admin/options-general.php?settings-updated=true”,并在主站点中给出 404,而它应该是“https://example.com/blog/wp-admin/options-general.php?settings-updated=true”。

我还更新了 WordPress URL。所有其他 URL(如主页、博客文章、页面、媒体等)都可以找到。

我在这里做错了什么?请随时询问更多信息以进行澄清。

答案1

以下是我采取的解决方法,

我重定向任何https://example.com/wp-adminhttps://example.com/blog/wp-admin随着我的nginx配置文件发生这样的变化,

location /wp-admin {
    rewrite ^/wp-admin(/.*)?$ /blog/wp-admin$1 permanent;
}

附言:不知为何,我觉得这不是最好的办法,但目前我唯一能做的就是这个。我希望有人能想出更好的解决方案。

相关内容