Nginx反向代理Nextcloud并配置HTTPS访问
Nextcloud的前期容器部署请参考 《docker-compose部署私有云盘nextcloud教程》
本文是在Nextcloud可以通过HTTP正常访问的情况下,通过nginx反向代理并配置启用HTTPS访问
注意:将本文Nginx的配置、Nextcloud的配置中的域名由本文的示例 p.hvz.cc
替换为你自己的域名。
一、配置系统环境
(1)nginx-1.22.0
nginx-1.22.0.tar.gz 下载地址:
https://cloud.189.cn/t/Qje2iyiIjmEr (访问码:1cy0)
(2)SSL证书
SSL单域名证书,国内的域名注册商均可免费申请,或者在freessl.cn申请(有效期一年,到期重新申请续期),或者参考本站文章《如何使用acme.sh与阿里云DNS自动签发Let’s Encrypt的免费数字证书》配置自动签发。
本文以域名:https://p.hvz.cc 为示例,SSL证书已在注册商申请,申请教程略。
二、安装Nginx
(1)安装 gcc、PCRE pcre-devel、zlib、openssl
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
(2)将 nginx-1.22.0.tar.gz 上传到 ~ 目录并解压缩
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
(3)配置
./configure --prefix=/usr/local/nginx --with-http_ssl_module
配置完成后,如图1
(4)编译安装
make && make install
执行上述命令后,等待安装完成
(5)启动、停止、重载配置
暂时先不要启动Nginx,修改配置文件后再启动,因为80端口被《docker-compose部署私有云盘nextcloud教程》中的容器占用,启动会报错:80端口被占用。
cd /usr/local/nginx/sbin/
./nginx #启动
./nginx -s stop #停止
./nginx -s quit #强制退出
./nginx -s reload #重载配置
三、Nginx配置文件
已配置好的配置文件下载地址:https://cloud.189.cn/t/3yaIrqYni6re (访问码:osj3)
可下载后直接覆盖上传,省略此步骤中的操作
执行以下命令:
cat /dev/null > /usr/local/nginx/conf/nignx.conf
vi /usr/local/nginx/conf/nignx.conf
按“i”键进入插入模式,将如下配置内容复制进去,然后再按“Esc”键进入命令模式,输入 :wq 保存
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8080;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 443 ssl;
server_name p.hvz.cc;
access_log logs/01.log main;
error_log logs/01error.log;
ssl_certificate cert01.pem;
ssl_certificate_key cert01.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host:$server_port;
client_max_body_size 4096m;
}
location /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
}
}
四、上传SSL证书
将证书文件修改为cert01.pem和cert01.key上传到 /usr/local/nginx/conf/
目录中
五、启动Nginx
/usr/local/nginx/sbin/nginx
添加开机自启动
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
在Centos系统防火墙放行443端口,如果是云服务器,在云服务器管理页面放行443/tcp
firewall-cmd --zone=public --add-port=443/tcp
firewall-cmd --runtime-to-permanent
将域名p.hvz.cc 解析到服务器的IP地址,待解析生效后,打开浏览器输入https://p.hvz.cc 测试访问Nextcloud
至此,nginx反向代理并配置HTTPS访问成功,现在需要修改Nextcloud的配置文件,添加信任域名并修改配置。
六、修改Nextcloud配置文件
(1)修改’trusted_domains’,将域名设置为信任域名
'trusted_domains' =>
array (
0 => 'p.hvz.cc',
),
(2)修改 ‘overwrite.cli.url’
'overwrite.cli.url' => 'https://p.hvz.cc:443',
(3)添加如下内容
在配置文件最后一行 );
前添加如下内容
'overwritehost' => 'p.hvz.cc:443',
'overwriteprotocol' => 'https',
此时,返回浏览器刷新页面
登录管理员账户后,查看概览,“所有检查已通过”
发表评论