Skip to main content
 首页 » 编程设计

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

2024年08月29日19mq0036

背景

我正在向我们在 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/bloghttp://wp-admin/install.php ,因为没有这方面的规定,所以我得到了 404。

    尝试 2

    我改了 location处理 /blog以及任何包含 wp-.* 的 URL .假设所有 Wordpress 页面都具有该 URL。
    location ~ ^/(blog|wp-.*) {
    这通过 Wordpress 设置起作用。
    如果我明确访问 http://server/wp-admin我可以转到博客管理页面。

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

  • 尝试 3

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



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

    引用
  • nginx proxy pass subpaths not redirected
  • How can I have same rule for two locations in NGINX config?
  • nginx redirect to docker container
  • 请您参考如下方法:

    根据自我回答的 SO 问题 https://stackoverflow.com/a/41479776/1264360

    // 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'];