宝塔面板下nextcloud完美优化配置
这两天在宝塔面板下折腾nextcloud,碰到了许多问题,详见:宝塔面板安装NextCloud一一搞定后台safe及设置警告 ,这里再补充几点
1、性能优化
Nextcloud因为各类缘故,原始部署后,任何页面加载时间都过于舒缓。之前的文章有介绍到使用PHP的APCu模块以提拔缓存性能,这里再介绍使用Memcached提升Nextcloud的性能。
Nextcloud支持多个不一样范例的缓存后端,因而能同时启用本地缓存(APCu)与分布式缓存(Memcached、Redis),官方引荐的结成是APCu+Redis
分布式缓存挑选Memcached、Redis就中一种启用便可,无需二者都启用
宝塔面板很便捷的能部署php的Memcached与Redis模块(注意是memcache d,非memcache),这里伏笔VPS以APCu+Memcached为例
部署终了后,open /www/wwwroot/你的nextcloud目录/config/config.php,在其尾部增加以下代码
第1行为指定本地缓存为APCu,第2、3行为指定分布式缓存为Memcached
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
array('localhost', 11211),
)
如图,注意分号,save便可
Redis则需要稍为修正一下配置
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
)
二、Nginx配置
这一步最为蛋疼,官方给出的Nginx配置示例,有些是能参考的,有些挪到宝塔上去则会有各类奇奇特怪的问题,因而需要针对宝塔修正nextcloud下Nginx的配置。
经过几天的折腾,这部分到底也搞定的差不多了。分享一下伏笔VPS的Nginx配置,为便捷理解与阅读,伏笔VPS已在配置文件中进入一些注释,能依据情况修正一下便可。
server
{
#根底配置,这些能照搬宝塔的配置
listen 80;
listen 443 ssl http2;
server_name file.bugxia.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/file.bugxia.com;
ssl_certificate /etc/letsencrypt/live/file.bugxia.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/file.bugxia.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#nextcloud包罗了403与404的错误页面
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
#HSTS、缓存设置
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
large_client_header_buffers 4 16k;
client_max_body_size 10G;
fastcgi_buffers 64 4K;
gzip off;
#宝塔原始是include挪用PHP相关配置,这里约略修正了一下,注意php版本
#进入了front_controller_active这项参数以清除页面URL中的index.php
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-72.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
fastcgi_param front_controller_active true;
}
#Let's Encrypt 证书续期验证目录
location /.well-known/acme-challenge { }
#nextcloud一些重要目录的权限设置
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
#静态资源重定向1
location ~* \/core\/(?:js\/oc\.js|preview\.png).*$ {
rewrite ^ /index.php last;
}
#webdav重定向
location / {
rewrite ^ /index.php$uri;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
#静态资源重定向2,支持使用acmescript在申请证书时对域名的验证
if ($uri !~* (?:\.(?:css|js|svg|gif|png|html|ttf|woff)$|^\/(?:remote|public|cron|status|ocs\/v1|ocs\/v2)\.php|^\/\.well-known\/acme-challenge\/.*$)){
rewrite ^ /index.php last;
}
}
#静态资源重定向3
location ~* \.(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
#对静态资源增加header
location ~ \.(?:css|js|woff|svg|gif)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=15778463";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
expires 30d;
access_log off;
}
#access_log /www/wwwlogs/file.bugxia.com.log;
}
参考:
https://docs.nextcloud.com/server/13/admin_manual/configuration_server/caching_configuration.html
https://serverfault.com/questions/845696/nginx-rewrite-nextcloud-index-php-in-url
参考文献: https://vps.fubi.hk/foreshadowingvps/zhishiku/20181026/6283.html