1. 程式人生 > >寶塔面板下nextcloud完美優化配置

寶塔面板下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