nginx 子路径重定向到 wordpress docker 容器

Vis*_*ish 6 wordpress nginx proxypass docker

背景

我正在向我们在 Nginx 上运行的现有网站添加 Dockerized 博客堆栈(Wordpress + MariaDB)。location /已经为网站提供服务,我被指示向 Nginx 配置添加逻辑,/blog将所有流量重定向到 Docker 容器。

尝试 1

  • 我localhost:9999在服务器上启动了 wordpress 容器。
  • 使用参考我添加了额外的逻辑:

location ^~ /blog { proxy_pass http://localhost:9999; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; } 问题:

Wordpress 重定向http://server/blog到http://wp-admin/install.php,由于没有相关规则,因此我收到了 404。

尝试 2

我更改了locationto 进程/blog以及任何包含wp-.*. 假设所有 Wordpress 页面都具有该 URL。

location ~ ^/(blog|wp-.*) {

这通过 Wordpress 设置起作用。如果我明确访问,http://server/wp-admin我可以转到博客管理页面。

问题:

  • Wordpress 博客页面不满足上述正则表达式,并返回 404。例如,http://server/?p=31是指向博客文章的链接。

尝试 3

只是为了它,我重定向location /到 Docker 容器,博客运行良好。但遗憾的是,这不是我的问题陈述。

题

为了满足来自所有 wordpress 特定的请求,我接下来该怎么做?当这里可能有更优雅的解决方案时,我觉得我陷入了与正则表达式搏斗的循环。

参考

  1. nginx 代理传递子路径未重定向
  2. 如何在 NGINX 配置中对两个位置使用相同的规则?
  3. nginx 重定向到 docker 容器

Sha*_* C. 5

根据自我回答的SO问题/sf/answers/2903584351/

// add these lines to wp-config.php
define('WP_SITE_URL', 'http://example.com/blog');
define('WP_HOME', 'http://example.com/blog');

$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];
Run Code Online (Sandbox Code Playgroud)