Do Note

儒道佛魔修心地

树莓派搭建轻量级Web服务器[3]


通过域名从外网进行访问是一个Web服务器的基本功能之一。常规的域名访问通过标准的DNS(Domain Name System)域名解析服务器即可完成,通过顶级域名解析到服务器对应的公网IP地址。然而,基于树莓派的轻量级Web服务器一般只存放在家中,带来的问题就是复杂的局域网构架环境。

解决方案一般有两种。

一种是通过动态域名解析服务,即DDNS(Dynamic Domain Name System),结合路由器端口映射功能,将域名引导至家中局域网环境对应的Web服务器。这一方案的部署有两个必要条件:A.家中的网络出口分配到公网IP;B.第三方DDNS需要开放API,例如DNSPod。

第二种就是搭建内网穿透服务,先将域名解析到一台处于公网环境的服务器中,同时在该服务器内运行内网穿透服务器端,在树莓派中运行客户端,并且客户端通过密钥访问服务端的IP,相当于通过一台公网的服务器作反向代理,将域名最终解析至家中的网络。目前而言,国内的花生壳已经可以提供这一功能,但收费较贵并且有着各种限制,有兴趣可以参考花生壳官网的教程。

本篇讲述的是基于第二种方案下的,自建内网穿透实现外网访问树莓派Web服务器

部署frp服务端

1.DNS服务中,添加A记录:pi.dushaoqing.com到公网IP地址。

2.公网的主机内添加域名pi.dushaoqing.com

3.执行

sudo vi /usr/local/nginx/conf/vhost/pi.dushaoqing.com.conf

内容更换为:

server {
listen 80;
server_name pi.dushaoqing.com;
location / {
proxy_pass http://127.0.0.1:8080;
#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

4.安装frp服务端

wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
sudo ./install-frps.sh install

5.设置frp服务端,http/https部分确保避开80和443,避免于本身的Web服务监听端口冲突。

Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):8080
frps vhost_http_port: 8080
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):4433
frps vhost_https_port: 4433

6.完成后记录下状态

Congratulations, frps install completed!
==============================================
You Server IP : 公网IP
Bind port : 5443
KCP support : true
vhost http port : 8080
vhost https port : 4433
Dashboard port : frps控制台端口
token : token密码
tcp_mux : true
Max Pool count : 50
Log level : info
Log max days : 3
Log file : enable
==============================================
frps Dashboard : frps控制台地址:端口
Dashboard user : 用户名
Dashboard password : 密码
==============================================

默认安装的目录是:/usr/local/frps/后期需要更改配置的可以进入这个目录修改frps.ini文件。可通过

sudo vi /usr/local/frps/frps.ini

进行修改

附常规管理命令:

更新frps:./install-frps.sh update
卸载frps:./install-frps.sh uninstall

管理:

/etc/init.d/frps start
/etc/init.d/frps stop
/etc/init.d/frps restart
/etc/init.d/frps status
/etc/init.d/frps config
/etc/init.d/frps version

7.检查frp服务端运行情况,访问frps控制台地址:端口

部署frp客户端

1.进入frp官网找对应版本的地址,与服务端版本一致

2.安装并配置frp客户端

wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_arm.tar.gz
tar -zxvf frp_0.20.0_linux_arm.tar.gz
cd frp_0.20.0_linux_arm
sudo vi frpc.ini

配置如下:

[common]
server_addr = 公网IP
server_port = 5443
token = token密码
[httpweb]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = pi.dushaoqing.com

3.后台开启客户端

sudo ./frpc -c ./frpc.ini &

这里显示[httpweb] start proxy success表示连接正常
若需要关闭,则

sudo killall frpc

4.此时访问frps控制台可以看到http服务运行。

5.访问pi.dushaoqing.com:8080,看到树莓派中的Web服务器根目录即表示内网穿透成功。

至此,基本的轻量级Web服务器框架已经全部部署完成,下一篇将搭建具体的网站程序LNSP构架


Leave a Reply

Your email address will not be published. Required fields are marked *

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