传送门:VPS快速完美部署ownCloud/Nextcloud全过程(1)
配置HTTPS
申请SSL证书
首先我们需要一个SSL证书,并且不建议使用自签名证书。证书有收费的也有免费的,收费的一般比较昂贵,像我这样自己玩玩用免费的就够了。
我是在阿里云上申请的免费证书,当然,像腾讯云这样的也提供免费证书。
部署SSL证书
我们可以参考阿里云给出的说明,将SSL证书部署到VPS上。首先将证书文件下载到VPS中。
阿里云所给教程如下
( 1 ) 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214067115020415.key;
( 2 ) 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:
#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件) #Include conf/extra/httpd-ssl.conf你也可以用下面的命令代替这一步:
a2enmod ssl service apache2 restart
修改主机配置文件
( 3 ) 打开 apache 安装目录下sites-avaliable/000-default.conf文件, 在配置文件中添加以下配置语句:# 添加 SSL 协议支持协议,去掉不安全的协议 SSLProtocol TLSv1 TLSv1.1 TLSv1.2 # 修改加密套件如下 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 # 证书公钥配置 SSLCertificateFile cert/public.pem # 证书私钥配置 SSLCertificateKeyFile cert/214067115020415.key # 证书链配置,如果该属性开头有 '#'字符,请删除掉 SSLCertificateChainFile cert/chain.pem保存后重启apache2
快捷方法
我们可以使用Let's Encrypt的一键部署SSL证书的功能。使用carbot进行一键部署,首先安装软件源:
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache
执行以下命令,一键部署SSL证书
certbot --apache
重启Apache,可以看到已经能够通过https链接访问Nextcloud了,左上角有了绿色小锁的标志。
修改config.php
需要在config.php中做一些相关设置。编辑config.php文件,将'overwrite.cli.url' => 'http://cloud.nosu.win',改为
overwrite.cli.url' => 'https://cloud.nosu.win',
配置HSTS
别急,还没完呢,此时进入Nextcloud管理界面,会有这样一条提示消息:[infobox]HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议 HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。[/infobox]
开启HSTS
编辑/etc/apache2/sites-available/000-default.conf以开启HSTS。(注意:如果使用Let's Encrypt一键配置,需要修改的配置文件不是000-default.conf而是000-default-le-ssl.conf)1.在第一行加入
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
像这样:
2.在<VirtualHost cloud.nosu.win>和</VirtualHost>之间加入:
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" </IfModule>
像这样:
保存退出,退出后重启Apache服务
service apache2 restart
配置内存缓存
基本按照Nextcloud/ownCloud配置APCu本地缓存+Memcached分布式缓存里提到的方式进行配置。安装APCu和Memcached
apt-get install php-apcu memcached php-memcached
在nextcloud/config/config.php中加入以下内容
'memcache.local' => '\OC\Memcache\APCu', 'memcache.distributed' => '\OC\Memcache\Memcached', 'memcached_servers' => array( array('localhost', 11211), ),
一个完整的config.php文件示例:
<?php $CONFIG = array ( 'instanceid' => 'ocwFEEGDExfd9', 'passwordsalt' => 'ajfjrgahughurhgodsi', 'secret' => 'N7CzQTEXU5Fefefdf/xaf+3afrggdrtGRergsGVlLPgQzlnVm', 'trusted_domains' => array ( 0 => 'cloud.nosu.win', ), 'datadirectory' => '/cloudserver/data', 'overwrite.cli.url' => 'http://cloud.nosu.win', 'dbtype' => 'mysql', 'version' => '11.0.2.7', 'dbname' => 'db', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'db_', 'dbuser' => 'db', 'dbpassword' => 'dbpasswd', 'logtimezone' => 'UTC', 'installed' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.distributed' => '\OC\Memcache\Memcached', 'memcached_servers' => array( array('localhost', 11211), ), );
去除index.php
访问Nextcloud时,url中会含有index.php修改config/config.php
1.编辑config/config.php在里面加入以下内容:
'overwrite.cli.url' => 'https://cloud.nosu.win', 'htaccess.RewriteBase' => '/',
这段代码的作用是设置.htaccess生成规则。
2.更新.htaccess文件
使用OCC命令重写.htaccess文件
sudo -u www-data php occ maintenance:update:htaccess .htaccess has been updated
再次刷新页面:
完成index.php的去除
-
Previous
带天窗的房间·THE SKYLIGHT ROOM(O Henry 欧·亨利)英汉双语 -
Next
NC安全检测工具:Nextcloud Private Cloud Security Scanner