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

0x00 准备工作

  • LNMP环境
  • 已经安装好nextcloud并能够正常访问,安装过程:https://nico.cc/archives/72/
  • 单端口多域名,80端口访问http,443端口访问https
  • 一台具有公网IP的服务器

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

  • 由于在树莓派一般处于局域网内,因此要通过域名访问可通过修改本地host文件或者在路由器上实现端口转发
  • 在利用LNMP添加SSL证书时,直接添加无法成功,一种解决的办法是,获取局域网公网ip,在路由器上将80端口转发到树莓派80端口(例如树莓派局域网ip为192.168.0.103),然后添加ssl证书

0x01 frp安装及配置

服务器安装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.920.ai
host_header_rewrite = aria2.920.ai

[web2]
type = http
local_port = 80
custom_domains = pan.920.ai
host_header_rewrite = pan.920.ai

[web3]
type = https
local_port = 443
custom_domains = pan.920.ai
host_header_rewrite = pan.920.ai

注意:

  • 由于本地多个域名共用一个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.920.ai.conf

其中配置为:

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

server
    {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name pan.920.ai ;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/pan.920.ai;
        ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/pan.920.ai/fullchain.cer;
        ssl_certificate_key /usr/local/nginx/conf/ssl/pan.920.ai/pan.920.ai.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;
    }

2019.04.23 08:05

添加新评论

๑òωó๑