K3终极折腾<四>填坑:解决nextcloud运行缓慢、挂载nfs、用openwrt的Nginx代理https访问等

八、优化Nextcloud

前面折腾https访问,难免重启docker甚至重启系统。搞定后,发现挂载的nfs上的文件看不到了。一翻查找后解决并优化,记下备用:

1、设置Nextcloud

关掉弹出窗口(Dashboard)、Talk、Contacts、设置–基本设置–后台任务选Cron

2、redis和APCu

笔者系统docker中已安装redis,APCu也是nextcloud容器自带,配置一下即可:

# 在nextcloud配置redis,编辑config.php
 'memcache.local' => '\\OC\\Memcache\\APCu',
 'memcache.locking' => '\OC\Memcache\Redis',
 'redis' =>
 array (
   'host' => '192.168.2.9',
   'port' => 6379,
 ),

3、计划任务

容器没有Crontab,只好在宿主机执行了,ext文件系统须指定用户。

# 定时每五分钟执行cron.php
*/5 * * * * docker exec --user www-data nextcloud php cron.php
# 文件找不到,手动运行一次后,配置个自动任务,每天自动执行一次
59 23 * * * docker exec --user www-data nextcloud php occ files:scan --all

4、开启视频缩略图

直接命令行解决:

docker exec -it --user root nextcloud  sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
docker exec -it --user root nextcloud  apt-get update
docker exec -it --user root nextcloud  apt-get -y  install ffmpeg
docker exec --user www-data nextcloud  php occ config:system:set enable_previews --value="true" --type=boolean
docker exec --user www-data nextcloud  php occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Movie"
docker exec --user www-data nextcloud  php occ config:system:set enabledPreviewProviders 1 --value="OC\\Preview\\HEIC"
docker exec --user www-data nextcloud  php occ config:system:set enabledPreviewProviders 2 --value="OC\\Preview\\MarkDown"

5、用openwrt的nginx做https代理

上一回都已经整好了ssl证书,这肯定要用给nextcloud服务配上,加强安全性,并且nextcloud很多app要求https连接。
上一回已经分析了nginx的启动过程,所以这回直接写个server在conf.d下就可以了,新开一个端口号,其实也可以写成域名代理,但是ipv4也没有443给我用,域名代理也没多大用处了。

# 新建一个server
vi /etc/nginx/conf.d/nextcloud

# 内容
server {
        listen 4443 ssl;
        listen [::]:4443 ssl;
        server_name example.com;
        include conf.d/nextcloud.locations;
        ssl_certificate /etc/nginx/conf.d/fullchain.crt;
        ssl_certificate_key /etc/nginx/conf.d/example.com.key;
        ssl_session_cache shared:SSL:32k;
        ssl_session_timeout 64m;
        access_log off; # logd openwrt;
        # location / { ... } # root location for this server.
}

就这样算了,反正也没80口给我跳转 ~
再写个locations:

vi /etc/nginx/conf.d/nextcloud.locations

# 内容

location / {
         # proxy_http_version 1.1;
         proxy_buffering off;
         proxy_set_header Host $http_host;                    
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Nginx-Proxy true;                        
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_pass http://192.168.2.9:8086;        
}       

nextcloud容器中有apache2服务器的,所以openwrt这里的nginx直接传过去参数就得了,不用再折腾什么,反正直升机(apache)和汤姆猫(tomcat)笔者都看不懂。
还得去nextcloud的config.php添加一下信任和协议转换!不然nextcloud以为nginx是半路劫道的(如下图)!
K3终极折腾<四>填坑:解决nextcloud运行缓慢、挂载nfs、用openwrt的Nginx代理https访问等_第1张图片

笔者这里是映射到宿主机的,直接开su帐号怼上去就算了!

# 注意路径
vi /path/to/config.php
# 添加这行写在自己的地址下面好了
'overwriteprotocol' => 'https',
# 再在这个数组中添加1,2,3等信任主机
'trusted_domains' =>
  array (
    0 => '192.168.2.9:8086',
    1 => 'localhost:8086',
    2 => 'example.com:4443',
    3 => 'ipv6.example.com:4443',  # 这行可有可无啦,作个示例而已
    ...
),

重启一下docker就ok了! 这回差不多了吧,这篇超长博文应该要完了!

原创文章 未经许可 严禁转载

你可能感兴趣的:(网络运维,nginx,https,nextcloud优化,nginx内网转发代理,nginx代理)