Nextcloud

VPS快速完美部署ownCloud/Nextcloud全过程(2)

传送门: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管理界面,会有这样一条提示消息:

HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议
HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。

开启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的去除

(7)

本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!

热评文章

评论:

11 条评论,访客:11 条,博主:0 条
  1. kedong
    kedong发布于: 

    你好,请问,如下的3个问题需要怎么解决?谢谢您的指导

    您的网页服务器未正确设置以解析“/.well-known/caldav”。
    您的网页服务器未正确设置以解析“/.well-known/carddav”。
    HTTP的请求头 “Referrer-Policy” 未设置为 “no-referrer”, “no-referrer-when-downgrade”, “strict-origin” or “strict-origin-when-cross-origin”. 这会导致信息泄露.

  2. crab
    crab发布于: 

    请问 把index.php去掉之后变成了 Index of /apps/files 这样的索引页面是我哪里做错了…… 自己重装了系统又做了一遍还是不行 实在没招了

  3. Raymond
    Raymond发布于: 

    你还亲,我使用lamp环境搭建nextcloud后在另一主机上使用nginx反向代理实现隐藏后端主机的目的。通过nginx反代的地址访问在经过安装界面后就加载不出来登陆界面,一直跳转,搭建主机的cpu使用率一度飙升到100%,但通过内网IP访问却没有问题,请问是不是我nginx反代的设置有问题,或者需要其他设置方法。

  4. lonely lover
    lonely lover发布于: 

    Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root.
    最新版nextcloud, 发现.htaccess 文件一直不生效,有没有什么好建议?

    • Ye, Cheng
      Ye, Cheng发布于: 

      应该是Apache的配置错误,可以百度上找找

    • axiauk
      axiauk发布于: 

      修改你的 apache2 的配置文件。在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。

  5. Zazen
    Zazen发布于: 

    还有为博客啥不搞个ssl http看着好难受23333

    • FrankGreg
      FrankGreg发布于: 

      有考虑,不久的将来会使用HTTPS

  6. Zazen
    Zazen发布于: 

    首先谢谢博主非常详实的教程 折腾了几天终于搞定 这里先提醒下lmap一键包的筒子们php7 opcache里的 opc必须关掉 否则会有web端会出错 然后 有些httpd的主config记录的权限并不是www-data 像我的就是user和group就是apache 所以按照博主的脚本改完以后马上网页端提示无权限访问 在httpd.conf把他改成www-data就可以了,这里算是两个坑吧,然后顺便问问博主,audioplayer插件另支持flac要自己动手 按照官方教程搞了一遍发现还是无法识别flac 有空的时候帮我看一看啊?

  7. 雪佛兰
    雪佛兰发布于: 

    你好,请问如何在CentOS修改https,谢谢

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.