Docker + reverse-proxy(nginx)+子目录作为root + wordpress(apache)+ multisite

时间:2018-06-14 00:24:29

标签: wordpress docker nginx reverse-proxy multisite

注意:在google翻译中从葡萄牙语翻译成英语,对不起......

我试图将wordpress网站放在网上,因为wordpress的根已经在子目录中(例如:webplace.example.br/subdirectory/< - root-wordpress),但每次我设置多站点并尝试使用它们,它开始给出问题。我使用带有nginx:alpine的容器作为反向代理,对于同一主机上的另一个容器wordpress:php7.2,我在nginx中使用此设置:

注意2:不是wordpress我只是想在网上建立一个基地,我不打算创建/编辑网站。

server {
    listen 80;
    server_name webplace.example.br;

    location /subdirectory/ {
        proxy_pass  http://container_wordpress:80/subdirectory/;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

}

,在得到这么多之后,我最终在wordpress容器中的/etc/apache2/apache2.conf中创建了一个别名,如下所示:

...
Alias /subdirectory /var/www/html
<Directory "/var/www/html">
    Options +Indexes
    AllowOverride All
</Directory>
...

正常安装后,我已按照以下步骤激活多站点:

1,在/* That's all...文件中的wp-config.php上方添加以下行:

define ('WP_ALLOW_MULTISITE', true);

2,在我更新页面后不久,它就在工具中&gt;安装网络,它给出了“确定”,它将此文本添加到先前在同一文件中输入的行的下方:

define ('MULTISITE', true);
define ('SUBDOMAIN_INSTALL', false);
define ('DOMAIN_CURRENT_SITE', 'webplace.example.br');
define ('PATH_CURRENT_SITE', '/subdirectory/');
define ('SITE_ID_CURRENT_SITE', 1);
define ('BLOG_ID_CURRENT_SITE', 1);

3,这部分在.htaccess,评论其他所有内容:

RewriteEngine On
RewriteBase /subdirectory/
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) var/www/html/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ var/www/html/$2 [L]
RewriteRule . index.php [L]

有了这个网站继续正常工作,但是当我创建另一个网站时,我把一些东西放进去,我尝试访问它,网站全部破碎,没有样式,仅纯文本,当我变得更糟尝试从多站点访问wp-admin,它甚至没有打开并说它重定向太多,以便知道网址看起来像webplace.example.br/subdirectory/<multisite>/wp-admin

任何人都可以在隧道尽头看到灯光,或者您认为它永远不会有效?

注3:我尝试了几个教程,但它们从未涵盖我使用的所有内容(反向代理(nginx),子目录,多站点,容器,wordpress(apache)),使它们无法正常工作。

注4:我可能没有理解或实施教程解决方案。

Note5:我也接受的另一种实现方式。

1 个答案:

答案 0 :(得分:0)

尝试一下:

为您的wordpress实例创建一个子域,例如blog.example.com

在NGINX反向代理上设置子域,使其指向您的wordpress容器

通过blog.example.com子域安装WordPress

更新您的反向代理,以便/blog也指向您的wordpress容器

您可以通过blog.example.comexample.com/blog访问您的wordpress。

当您访问example.com/blog时,所有wp-includes / wp-content都将通过blog.example.com网站加载,而WordPress将继续让您的访问者单击example.com/blog网站上的其余内容