什么原因导致 load.php 404,从而在使用 mediawiki docker 镜像时没有样式/脚本?

问题描述 投票:0回答:1

我正在尝试部署 最新的 mediawiki 镜像(1.42.3),但我有一个预 Docker 化且稍微过时的

LocalSettings.php
(我没有运行安装脚本,因为我有一个现有的数据库,尽管我确实运行了
maintenance/update.php
)。主要问题是我没有获得样式或脚本,但我可以看到我的文章和其他页面。这是因为,如我的浏览器控制台所示,对
load.php
的请求返回
404
。因此,当它尝试渲染样式表时,它认为
"Load.php"
是一篇文章,并在需要 CSS/JS 的地方传递 HTML。以下是相关设置:

$wgScriptPath = "/wiki";
$wgArticlePath = "/wiki/$1";
$wgServer = "https://example.org";

注意,我使用的是我的实际域名,而不是“example.org”。我已经尝试过

wgScriptPath
的其他值,例如
"/"
"/w"
。该图像将 mediawiki 安装放在容器内的
/var/www/html
处。请注意,我预期的 wiki 访问路径位于
https://example.org/wiki

我不确定问题是否出在 URL 重写或我的 NGINX 配置上。 在 mediawiki 图像中,apache 据称已预先配置为 URL 重写。这是我的反向代理配置:

location /wiki {
    proxy_pass http://127.0.0.1:8080;
    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-Proto $scheme;
}

注意:8080 映射到 80(mediawiki 容器中的 apache 服务器)。

请告诉我你的想法。

php docker apache nginx mediawiki
1个回答
0
投票

我寻求替代解决方案。切换到 mediawiki:stable-fpm 图像并修改我的 nginx 以在

/wiki
位置

内包含一个 php 块
location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^/wiki(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
    // also including PATH_INFO, SERVER_NAME, SERVER_PROTOCOL
}

您还必须在 Docker 上以绑定方式挂载以下 wiki 目录:

/images/
/resources/assets/
,还有一些皮肤资源,具体取决于您使用的皮肤。

您还可以扩展图像以使用扩展来构建

总而言之,这个设置对我来说很有效。然而,这感觉有点hacky,因为mediawiki 期望静态提供几个不同的目录,这与Docker 项目寻求实现的目标相冲突。您可能会丢失随机资源,您所能做的就是为保存这些资源的目录创建一个绑定安装,这意味着您还必须为这些安装提供文件本身。

如果您碰巧知道解决此问题的优雅解决方案,请发布答案。

© www.soinside.com 2019 - 2024. All rights reserved.