【发布时间】:2018-05-23 07:45:20
【问题描述】:
背景
我正在努力将 Dockerized 博客堆栈 (Wordpress + MariaDB) 添加到我们现有的在 Nginx 上运行的网站。 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
我将location 更改为处理/blog 以及包含wp-.* 的任何URL。假设所有 Wordpress 页面都将具有该 URL。
location ~ ^/(blog|wp-.*) {
这通过 Wordpress 设置工作。
如果我明确访问http://server/wp-admin,我就可以访问博客管理页面。
问题:
- Wordpress 博客页面不满足上述正则表达式,并返回 404。例如
http://server/?p=31是博客文章的链接。
尝试 3
只是为了它,我将location / 重定向到 Docker 容器并且博客运行良好。但遗憾的是,这不是我的问题陈述。
问题
接下来我该怎么做才能满足所有来自 wordpress 的特定请求?当这里可能有更优雅的解决方案时,我觉得我正在陷入一个对抗正则表达式的循环。
参考文献
【问题讨论】:
标签: wordpress docker nginx proxypass