Nginx证书链配置
Nginx不支持自动配置证书链,需要自己配置
类似这样的只有一个,不行
-----BEGIN CERTIFICATE-----
blablabla
-----END CERTIFICATE-----
类似这样的有很多个,行
-----BEGIN CERTIFICATE-----
blablabla1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
blablabla2
-----END CERTIFICATE-----
一般申请证书后可以拿到 域名.crt
和 域名_bundle.crt
,前面是给apache这些用的,带bundle的就是给Nginx用的。混用的话浏览器可能没什么关系,但是通过命令行走https可能就会出错,使用 openssl s_client -connect 域名
测试的时候也会报 unable to verify the first certificate
中文文本乱码
nextcloud22更新后图片的fetch不再通过ApiService.php的该方法,返回默认就是文本,所以直接使用LL223851提供的方法即可,不需要检查了。
下面是以前写的针对nextcloud21的解决方案
Can’t show Chinese word corrlecty, Maybe it’s because GB2312 and GBk encoding is not supported #405
按照网络流传的方法,没有验证文件是否为纯文本,如果遇到缩略图也会将缩略图当成文本来更改编码,导致图片无法预览(小头像也是如此)
$fileContents=$file->getContent(); $encoding = mb_detect_encoding($fileContents . 'a', 'UTF-8, GB2312, GBK, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII', true); if ($encoding === '') { $encoding = 'ISO-8859-15'; } $fileContents = iconv($encoding, 'UTF-8', $fileContents); $file->putContent($fileContents ); return new FileDisplayResponse($file);
改成下面就好了,验证了一下header是否有声明内容为纯文本
$fileContents = $this->file->getContent(); $headers = $this->getHeaders(); if (array_key_exists("Content-Type", $headers) and $headers["Content-Type"] == "text/plain") { $encoding = mb_detect_encoding($fileContents . "a", "UTF-8, GB2312, GBK, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII", true); if ($encoding !== false) { $fileContents = iconv($encoding, "UTF-8", $fileContents); } } $file->putContent($fileContents); return new FileDisplayResponse($file);
速度和稳定性
Nextcloud的Docker镜像默认的latest版本并不是最新的稳定版本,而是最新的版本(不一定稳定,至少个人实测问题很多),追求稳定需要专门指定stable版本的镜像
速度的话需要配置一下redis和mariadb,然后利用cron执行定时任务,而不是页面点一下执行一次
MariaDB相关报错
MariaDB最新版本(10.6)的镜像有点小问题,会导致Nextcloud报错 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED ,换成推荐的10.5即可
其他小毛病
报php-imagick不支持SVG
虽然没影响,但是看着警告难受
apt install libmagickcore-6.q16-6-extra