【Nas折腾日记】Frp + Nginx 内网穿透
NAS
971 words
3 min read
– views
目前的主要需求是外网通过对应服务的域名访问 Nas 上的服务,所以需要做内网穿透。
其实 IPv6 + DDNS 也可以解决,也不需要再自行购买服务器了,但是有个弊端是家用宽度屏蔽了 80 和 443 端口,所以访问的时候需要加上端口号,不太方便。
所需设备
- 一台公网服务器(如果是国内服务器需要备案)
- 一台在内网的 Nas
公网服务器配置
Frps
从 Frp 的 Github Release 页面下载对应的版本,然后解压。
1 2 3 4 5
| wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
tar -zxvf frp_0.61.2_linux_amd64.tar.gz
cd frp_0.61.2_linux_amd64
|
打开解压后的文件夹后,可以看到 frps.toml 文件,这个文件是 Frps 的配置文件。
需要注意的是,在 Frp 官网中提到,目前支持的文件格式包括 TOML/YAML/JSON,旧的 INI 格式仍然支持,但已经不再推荐。但网络中的大多数教程都是使用的 INI 格式,参照时需注意格式转换。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| bindPort = 7000
vhostHTTPPort = 8080
subdomainHost = "your_domain.com"
webServer.addr = "0.0.0.0" webServer.port = 7500
webServer.user = "admin" webServer.password = "admin"
|
编写完配置文件后,即可启动 Frps。
这里推荐使用 systemd 来管理 Frps 服务,具体不再赘述。
acme.sh
如果不需要 HTTPS 可以跳过这一步。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| curl https://get.acme.sh | sh -s [email protected]
export CF_Key="xxxxxxxxxxxxxxxxxxxxxxxxxx"
/root/.acme.sh/acme.sh --issue --dns dns_cf -d *.your_domain.com
/root/.acme.sh/acme.sh --install-cert -d *.your_domain.com --key-file /ssl/key.pem --fullchain-file /ssl/crt.pem --reloadcmd "service frps restart"
|
Nginx
1 2 3 4 5 6 7 8
| sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
systemctl status nginx
|
配置 Nginx
/etc/nginx/default.conf 或者自行新建一个 conf 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| server { listen 443 ssl; server_name *.your_domian.com; ssl_certificate /ssl/crt.pem; ssl_certificate_key /ssl/key.pem;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
server { listen 80; server_name *.your_domian.com;
return 301 https://$host:443$request_uri; }
|
Nas 配置
Nas 的配置比较简单,只需要下载对应的 Frpc 版本,然后配置 Frpc 的配置文件即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000
loginFailExit=false
[[proxies]] name = "test1" type = "http"
localIp = "127.0.0.1" localPort = 1111
subdomain = "test1"
[[proxies]] name = "test1" type = "http" localIp = "127.0.0.1" localPort = 13210
subdomain = "test2"
|
填写完配置文件后,启动 Frpc 即可(填写了 subdomian 后,不需要在 dns 服务商中再去解析)。
参考链接