NEXCLOUD优化
PHP配置环境变量
/etc/php/8.2/fpm/pool.d
vim /etc/php/8.2/fpm/pool.d/www.conf
如果使用
env | grep $PATH
能打印出环境变量只需要
**取消注释
clear_env = no
**即可
否则自己手动先配置环境变量吧(略)
重启PHP
任何对php做出的修改都使用以下命令重启
首先
ps aux|grep php-fpm
使用kill命令
kill -USR2 33166
最大上传大小与内存限制
PHP-FPM
如果您想增加最大上传大小,您还必须修改 您的
php-fpm
配置并增加
upload_max_filesize
和
post_max_size
值。并且修改最大内存大小
memory_limit
.您需要重新启动
php-fpm
和您的 HTTP 服务器以便应用这些更改。
参考值可根据 pmcalculator 计算得出
vim /etc/php/8.2/fpm/php.ini
; https://php.net/upload-max-filesize
upload_max_filesize = 20G
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 5
; https://php.net/memory-limit
memory_limit = 7168M
max_input_time = -1
max_execute_time = 3600
NGINX
修改nginx的nextcloud.conf 配置中的最大上传大小即可
vim /etc/nginx/conf.d/nextcloud.conf
# set max upload size
client_max_body_size 0;
抑制日志消息
如果您在日志文件中看到无意义的消息,例如 ,请将此部分添加到 你的 nginx 配置来抑制它们:
client denied by server configuration: /var/www/data/htaccesstest.txt
location = /data/htaccesstest.txt {
allow all;
log_not_found off;
access_log off;
}
请求头相关问题
vim /etc/nginx/conf.d/nextcloud.conf
**在HTTPS配置块中增添以下内容
add_header Strict-Transport-Security max-age=15552000;
**
add_header Strict-Transport-Security 'max-age=15552000' always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
重载nginx
systemctl reload nginx
缺失国际区号与默认地域
vim /var/www/nextcloud/config/config.php
添加如下语句
'default_phone_region' => 'CN',
'default_language' => 'zh_CN',
'default_locale' => 'zh',
不被信任的域名
vim /var/www/nextcloud/config/config.php
添加该域名即可
#受信任的域名
'trusted_domains' =>
array (
0 => '10.0.0.2',
1 => '10.1.1.20',
2 => 'nc6.example.com',
3 => 'hnc6.example.com',
4 => 'nc4.example.com',
),
您的网页服务器未正确设置以解析“/.well-known/**”
编辑nginx配置文件,修改well-know相关
location ^~ /.well-known {
location = /.well-known/webfinger { return 301 $scheme://$host:11224/index.php/.well-known/webfinger; }
location = /.well-known/nodeinfo {return 301 $scheme://$host:11224/index.php/.well-known/nodeinfo;}
location = /.well-known/carddav { return 301 $scheme://$host:11224/remote.php/dav/; }
location = /.well-known/caldav { return 301 $scheme://$host:11224/remote.php/dav/; }
try_files $uri $uri/ =404;
}
编辑 vim /var/www/nextcloud/config/config.php
主域名一定使用本机的,原因在于安装时使用了代理服务器域名
'overwrite.cli.url' => 'https://10.0.0.2:11224',
40069:当端口不是80或者443并且在安装时使用代理的域名时会出现此问题,修改40069为对应的外部映射端口
**或者使用
$server_port
来代替**
缺少PHP模块
缺啥补啥,或者全给他下了
sudo apt install -y php8.2-common php8.2-curl php8.2-xml php8.2-mbstring php8.2-gd php8.2-sqlite3 php8.2-mysql php8.2-bz2 php8.2-intl php8.2-ldap php8.2-imap php8.2-bcmath php8.2-gmp php8.2-apcu php8.2-imagick
优化内存缓存配置
官网推荐同时使用本地缓存和分布式缓存。推荐的缓存是APCu和Redis
apt install -y php8.2-apcu redis-server php8.2-redis
确认Redis是否正在运行:
ps ax | grep redis
netstat -tlnp | grep redis
Redis开始运行后,启用相应php模块:
你也可以手动在php.ini中添加以下内容,效果相同:
vim /etc/php/8.2/fpm/php.ini
; Redis php extension
extension=redis.so
开启apcu(php有php-fpm和php-cli两种运行方式,都要开启apcu,添加
apc.enable_cli=1
)
vim /etc/php/8.2/fpm/conf.d/20-apcu.ini
apc.enable_cli=1
vim /etc/php/8.2/cli/php.ini
apc.enable_cli=1
按照上述的步骤重启PHP服务
开启apcu和redis
vim /var/www/nextcloud/config/config.php
添加如下内容
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379],
**添加
'memcache.distributed' => '\OC\Memcache\Redis',
后会报错,不知为何,若报错删除即可**
**如果redis有密码,加上该参数即可
'password' => '******'
**
重载nginx
systemctl reload nginx
优化 php-fpm 性能,提高页面加载效率
可在这个网站计算:https://spot13.com/pmcalculator/
优化www.conf配置文件,增加更多的进程来处理页面数据。
vim /etc/php/8.2/fpm/pool.d/www.conf
需要修改和添加的字段有:
# pm.max_children = 5
pm.max_children =79# pm.start_servers = 2
pm.start_servers =19#pm.min_spare_servers = 1
pm.min_spare_servers =19# pm.max_spare_servers = 3
pm.max_spare_servers =59
数值越大,进程越多,平均每个进程消耗 32M-96M 内存,按需设置
设置成功后重启 nextcloud 服务即可。
504 Gateway Time-out
vim /etc/nginx/conf.d/nextcloud.conf
在 nginx 配置文件钟添加以下语句即可解决
fastcgi_read_timeout 86400;
重启nginx或者重新加载配置文件
nginx -s reload
存在错误日志
日志路径位于nextcloud/data/ 目录下
vim /var/www/nextcloud/data/nextcloud.log
php-imagick 模块不支持 SVG
可以直接用以下步骤即可
apt install libmagickcore-6.q16-6-extra
重启nginx
systemctl restart nginx
nextcloud无法访问应用商店
#在config.php中增加以下配置
vim /var/www/nextcloud/config/config.php
'appstoreenabled' => true,
'appstoreurl' => 'https://www.orcy.net/ncapps/v2/',
视频预览与缩略图并配置imaginary
**在应用商店下载
Preview Generator
插件并将其启用(通过正确配置可以预生成预览文件,减少系统负载)**
首先生成所有预览(必须下载Preview Generator),如若文件很多,将会耗费较长时间
cd /var/www/nextcloud
sudo -u www-data php occ Preview:generate-all -vvv
其次将Preview:pre-generate添加到cron作业中
cd /var/www/nextcloud
sudo -u www-data php occ preview:pre-generate
构建imaginary服务
手动构建
创建并编辑docker-compose.yml
version: '3.1'
services:
aio-imaginary:
image: docker.io/nextcloud/aio-imaginary:latest
restart: always
environment:
- PORT=9000
ports:
- "172.18.0.10:9000:9000"
command:
- -concurrency 50
- -enable-url-source
- -log-level debug
之后在当前文件夹下执行
docker compose up -d
即可
宝塔1panel构建
apt install libmagickcore-6.q16-6-extra
apt install ffmpeg
vim /var/www/nextcloud/config/config.php
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\TXT',
1 => 'OC\\Preview\\MarkDown',
2 => 'OC\\Preview\\OpenDocument',
3 => 'OC\\Preview\\PDF',
4 => 'OC\\Preview\\MSOffice2003',
5 => 'OC\\Preview\\MSOfficeDoc',
6 => 'OC\\Preview\\PDF',
7 => 'OC\\Preview\\Image',
8 => 'OC\\Preview\\Photoshop',
9 => 'OC\\Preview\\TIFF',
10 => 'OC\\Preview\\SVG',
11 => 'OC\\Preview\\Font',
12 => 'OC\\Preview\\MP3',
13 => 'OC\\Preview\\Movie',
14 => 'OC\\Preview\\MKV',
15 => 'OC\\Preview\\MP4',
16 => 'OC\\Preview\\AVI',
17 => 'OC\Preview\EMF',
18 => 'OC\\Preview\\Krita',
19 => 'OC\\Preview\\Imaginary',
),
'preview_imaginary_url' => 'http://imaginary:9000',
#缩略图为webp格式
'preview_format' => 'webp',
预览图像的默认 WebP 质量设置为“80”。将其更改为30,加快加载速度:
cd /var/www/nextcloud
sudo -u www-data php occ config:app:set preview webp_quality --value="30"
之后可以很明显的感觉到加载图片速度变快了,也可以预览视频图片
设置cron定时任务
vim /etc/systemd/system/nextcloudcron.service
[Unit]
Description=Nextcloud cron.php job
[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
[Install]
WantedBy=basic.target
vim /etc/systemd/system/nextcloudcron.timer
[Unit]
Description=Run Nextcloud cron.php every 7 minutes
[Timer]
OnBootSec=7min
OnUnitActiveSec=7min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
systemctl enable --now nextcloudcron.timer
电子邮件配置
数据库优化
具体优化性能以硬件标准为准
vim /etc/php/8.2/fpm/conf.d/20-mysqli.ini
最底下加入以下内容:
[mysql]
mysql.allow_local_infile=On
mysql.allow_persistent=On
mysql.cache_size=2000
mysql.max_persistent=-1
mysql.max_links=-1
mysql.default_port=
mysql.default_socket=/run/mysqld/mysqld.sock
mysql.default_host=
mysql.default_user=
mysql.default_password=
mysql.connect_timeout=60
mysql.trace_mode=Off
编辑
mariadb.cnf
文件:
vim /etc/mysql/mariadb.cnf
加入以下内容:
[server]
skip_name_resolve = 1
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
query_cache_type = 1
query_cache_limit = 2M
query_cache_min_res_unit = 2k
query_cache_size = 64M
tmp_table_size= 64M
max_heap_table_size= 64M
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1
重启mysql与nginx
突破内网上传上限
更改上传块大小
cd /var/www/nextcloud
sudo -u www-data php occ config:app:set files max_chunk_size --value 0
如果遇到设置为0不能上传的问题,请设置为一个特别大的值即可
您的远端地址识别为***,且目前正受到强力限制,导致降低了各种请求的性能。
根本原因:在登陆时,使用代理服务输入了错误的密码,触发了暴力保护,最简单的解决方法是注销重新用正确账户密码登录一次即可。或者使用如下的方式,将该代理服务ip加入暴力破解白名单即可。
官网解释
暴力保护
Nextcloud 具有针对暴力破解尝试的内置保护。这可以保护您的系统免受攻击者尝试,例如尝试许多不同的密码。
Nextcloud 上默认启用暴力保护。
怎么运行的
暴力保护最容易在登录页面上看到。如果您尝试使用无效的用户名和/或密码首次登录,您将不会注意到任何内容。但如果您这样做几次,您就会开始注意到每次登录验证所需的时间都更长。这就是强力保护的作用。
最大延迟为 25 秒。
成功登录后,尝试次数将被清除。一旦用户通过正确的身份验证,他们将不再受到延迟的影响。
暴力保护和负载均衡器/反向代理
如果您使用反向代理或负载均衡器,请务必确保其设置正确。特别是config.php 中的trusted_proxies和forwarded_for_headers 变量需要正确设置。否则,Nextcloud 实际上可能会开始限制来自反向代理或负载均衡器的所有流量。有关详细信息,请参阅反向代理。
从暴力保护中排除 IP 地址
可以将 IP 地址排除在暴力保护之外。
启用暴力设置应用程序
以管理员身份登录并转到管理设置 -> 安全
警告
请注意,任何排除的 IP 地址都可以执行身份验证尝试,而不会受到任何限制。最好排除尽可能少的 IP 地址,甚至根本不排除。
启用 Brute-force settings 应用程序
在 安全 选项卡中,添加暴力破解ip白名单即可
config.php完整配置如下
<?php
$CONFIG = array (
'instanceid' => 'ocpvn710jx5a',
'passwordsalt' => '2MOt/7l5TVhHAuken/qn3KIpVEk8jp',
'secret' => 'mGG1LUm+h9sItuZKSY9oSJ16xx28otdRvTodoxjEVFhenVaz',
#受信任的域名
'trusted_domains' =>
array (
0 => '10.0.0.2',
1 => '10.1.1.20',
2 => 'nc6.example.com',
3 => 'hnc6.example.com',
4 => 'nc4.example.com',
),
'datadirectory' => '/var/www/nextcloud/data',
'version' => '27.1.4.1',
#主域名
'overwrite.cli.url' => 'https://10.0.0.2',
#数据库信息
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'glxaa',
'dbpassword' => '123456',
'installed' => true,
'default_phone_region' => 'CN',
'default_language' => 'zh_CN',
'default_locale' => 'zh',
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
#配置预加载,缩略图
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\TXT',
1 => 'OC\\Preview\\MarkDown',
2 => 'OC\\Preview\\OpenDocument',
3 => 'OC\\Preview\\PDF',
4 => 'OC\\Preview\\MSOffice2003',
5 => 'OC\\Preview\\MSOfficeDoc',
6 => 'OC\\Preview\\PDF',
7 => 'OC\\Preview\\Image',
8 => 'OC\\Preview\\Photoshop',
9 => 'OC\\Preview\\TIFF',
10 => 'OC\\Preview\\SVG',
11 => 'OC\\Preview\\Font',
12 => 'OC\\Preview\\MP3',
13 => 'OC\\Preview\\Movie',
14 => 'OC\\Preview\\MKV',
15 => 'OC\\Preview\\MP4',
16 => 'OC\\Preview\\AVI',
17 => 'OC\\Preview\\EMF',
),
#配置应用商店国内代理
'appstoreenabled' => true,
'appstoreurl' => 'https://www.orcy.net/ncapps/v2/',
'twofactor_enforced' => 'false',
'twofactor_enforced_groups' =>
array (
),
'twofactor_enforced_excluded_groups' =>
array (
),
);
优化后安全检查结果
一:nextcloud27+nginx +ssl+各种优化+双栈的傻瓜式安装教程
二:nextcloud27最全面优化与解决各种安全警告
三:nextcloud27+nginx 使用家庭公网ipv6+云服务器公网ipv4配置双栈并将特定的请
四:解决nextcloud无法播放avi、mkv等视频格式的问题
五:解决nextcloud无法在线预览markdown文件内的网络图片得到问题
版权归原作者 LB33333 所有, 如有侵权,请联系我们删除。