暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

树莓派安装nextcloud结合frp实现外网域名访问

Torrk 2020-09-17
1278

0x00 准备工作

  • LNMP环境

  • 已经安装好nextcloud并能够正常访问,安装过程:https://conimi.com/archives/69

  • 单端口多域名,80端口访问http,443端口访问https

  • 一台具有公网IP的服务器


注意(可忽略,仅作为个人笔记):


  • 由于树莓派一般处于局域网内,因此要通过域名访问可通过修改本地host文件,然后在路由器上实现端口转发

  • 在利用LNMP添加SSL证书时,直接添加无法成功,一种解决的办法是,获取局域网公网ip,在路由器上将80端口转发到树莓派80端口(例如树莓派局域网ip为192.168.0.103),然后添加ssl证书

  • 先在服务器上添加证书,然后下载到本地

0x01 frp安装及配置


  • frp官网地址:https://github.com/fatedier/frp/releases

  • 服务器上不需要安装LNMP环境

服务器安装frps及配置


我的安装路径/opt/frps/frps_80/
以下是我的frps的配置

[common]
bind_addr = 0.0.0.0
bind_port = 7000
auth_token = 12345678
vhost_http_port = 80
vhost_https_port = 443

树莓派安装frpc及配置


由于我是在树莓派上安装的,因此frpc选择的是ARM版本,根据相应环境选择相对应版本。

我的安装路径/opt/frpc/frpc_80/
以下是我的frps的配置


[common]
server_addr = 34.45.23.1
server_port = 7000
auth_token = 12345678
log_file = /opt/frpc/frpc_80/frpc.log
log_level = info


#与Aria2有关,可忽略
[web1]
type = http
local_port = 80
custom_domains = aria2.conimi.com
host_header_rewrite = aria2.conimi.com


[web2]
type = http
local_port = 80
custom_domains = pan.conimi.com
host_header_rewrite = pan.conimi.com


[web3]
type = https
local_port = 443
custom_domains = pan.conimi.com
host_header_rewrite = pan.conimi.com


注意:

  • 由于本地多个域名共用一个80端口和443端口,nginx通过http 请求中的 host 字段来确定是哪个网站,因此需要加上host_header_rewrite
    ,而 custom_domains
    是必须的。

0x02 frp自启动


  • 服务器系统为CentOS

  • 树莓派系统为Debian

frps实现开机自启


cd /etc/init.d
touch frps && chmod +x frps
vim frps

其中frps
的内容为


#!/bin/sh
### BEGIN INIT INFO
# Provides: frps
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: frps
# Description: frp
### END INIT INFO


nohup /opt/frps/frps_80/./frps -c /opt/frps/frps_80/./frps.ini >/dev/null 2>&1 &


exit 0

保存并设置为开机自启

update-rc.d frps defaults

frpc实现开机自启


cd /etc/init.d
touch frpc && chmod +x frpc
vim frpc


其中frpc
的内容为

#!/bin/sh
### BEGIN INIT INFO
# Provides: frpc
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: frpc
# Description: frp
### END INIT INFO


nohup sleep 6;/opt/frpc/frpc_80/./frpc -c /opt/frpc/frpc_80/./frpc.ini >/dev/null 2>&1 &


exit 0


保存并设置为开机自启


update-rc.d frpc defaults

0x03 设置301重定向


  • 将域名解析到服务器公网ip

  • 通过域名能够访问http和https

我的nginx配置路径为:/usr/local/nginx/conf/vhost/pan.conimi.com.conf

其中配置为:

server
{
listen 80;
listen [::]:80;
server_name pan.conimi.com ;
return 301 https://pan.conimi.com$request_uri;
}


server
{
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name pan.conimi.com ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/pan.conimi.com;
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/pan.conimi.com/fullchain.cer;
ssl_certificate_key /usr/local/nginx/conf/ssl/pan.conimi.com/pan.conimi.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;


include enable-php-pathinfo.conf;


location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}


location ~ .*\.(js|css)?$
{
expires 12h;
}


location ~ /.well-known {
allow all;
}


location ~ /\.
{
deny all;
}


access_log off;
}
文章转载自Torrk,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论