准备工作
- 一个域名(以下以阿里云为例)
- 一台有公网IP的服务器
- 一台可以上网的PC
- 下载 frp 软件(服务器和局域网 PC 分别下载与操作系统相对应的版本)
域名解析
阿里云控制台》域名》域名列表》解析》域名解析,添加记录:
主机记录 | 记录类型 | 解析线路 | 记录值 | TTL |
---|---|---|---|---|
@ | A | 默认 | 5.5.5.5(填写服务器实际IP) | 默认 |
www | CNAME | 默认 | sample.cn(填写实际域名) | 默认 |
上面两条记录实现
sample.cn
和www.sample.cn
指向同样的内容页面。
申请免费 SSL 证书
阿里云控制台》域名》域名列表》管理》基本信息》免费开启 SSL
证书,申请证书:
- 选择
Symantec
证书,然后申请
- 选择
免费型 DV SSL
,然后立即购买
- 证书列表页面,选择
申请
,填写域名等必要信息,一般几分钟内就可以看到证书申请成功了 - 下载证书到局域网 PC ,选择
Nginx
类型证书,解压缩后放入PC 端frp
程序目录
配置 frp
frps.ini frp 公网服务器端配置文件 frpc.ini frp 局域网 PC 端配置文件
下载 frp
frps.ini
# frps.ini [common] bind_port = 5001 # 设置转发端口 vhost_http_port = 80 vhost_https_port = 443
服务器端启动 frps:
- linux 操作系统下:
./frps -c ./frps.ini
- Windows 操作系统下
frps -c frps.ini
frpc.ini
# frpc.ini [common] # 填写服务器实际IP server_addr = 5.5.5.5 server_port = 5001 [http-@.sample.cn] type = http local_port = 80 # 填写实际域名 custom_domains = sample.cn [http-www.sample.cn] type = http local_port = 80 # 填写实际域名 custom_domains = www.sample.cn [https-@.sample.cn] type = https # 填写实际域名 custom_domains = sample.cn plugin = https2http plugin_local_addr = 127.0.0.1:80 # HTTPS 证书相关的配置 plugin_crt_path = ./sample.cn.pem plugin_key_path = ./sample.cn.key plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp [https-www.sample.cn] type = https # 填写实际域名 custom_domains = www.sample.cn plugin = https2http plugin_local_addr = 127.0.0.1:80 # HTTPS 证书相关的配置 plugin_crt_path = ./sample.cn.pem plugin_key_path = ./sample.cn.key plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp
局域网 PC 端启动 frpc:
- linux 操作系统下:
./frpc -c ./frpc.ini
- Windows 操作系统下
frpc -c frpc.ini
自定义 404 页面
/frp/frps.ini
文件增加配置:
# frps.ini [common] custom_404_page = ./404.html
/frp/404.html
文件内容定制:
<!DOCTYPE html> <html> <head> <title>Not Found</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>The page you visit not found.</h1> <p>Sorry, the page you are looking for is currently unavailable.<br/> Please try again later.</p> <p>The server is powered by <a href="https://github.com/fatedier/frp">frp</a>.</p> <p><em>Faithfully yours, frp.</em></p> </body> </html>
验证效果
正常情况下,下面几种方式均可访问:
frp 设置为系统服务
在 ubuntu
系统中基于 systemd
把程序设置为服务,每次系统重启后自动加载。
server
systemd ubuntu 配置
在具备公网IP的服务器中,新建文件:/etc/systemd/system/frp-server.service
vi /etc/systemd/system/frp-server.service or sudo gedit /etc/systemd/system/frp-server.service
内容如下:
[Unit] Description=frp-server daemon Wants=NetworkManager-wait-online.service network-online.target After=NetworkManager-wait-online.service network.target network-online.target #After=network.target [Service] Type=simple #User=root Restart=on-failure RestartSec=5s WorkingDirectory=/root/frp ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install] WantedBy=multi-user.target
然后:
sudo systemctl daemon-reload
sudo systemctl enable frpc.service
sudo systemctl disable frpc.service
sudo systemctl start frpc.service
sudo systemctl stop frpc.service
sudo systemctl restart frpc.service
sudo systemctl status frpc.service
client
systemd ubuntu 配置
在局域网PC端,新建文件:/etc/systemd/system/frp-client.service
vi /etc/systemd/system/frpc.service or sudo gedit /etc/systemd/system/frpc.service
内容如下:
[Unit] Description=frp-client daemon Wants=NetworkManager-wait-online.service network-online.target After=NetworkManager-wait-online.service network.target network-online.target #After=network.target [Service] Type=simple #User=root Restart=on-failure RestartSec=5s WorkingDirectory=/home/username/frp ExecStart=/home/username/frp/frpc -c /home/username/frp/frpc.ini ExecReload=/home/username/frp/frpc reload -c /home/username/frp/frpc.ini [Install] WantedBy=multi-user.target
备忘
Linux 解压缩 tar.gz 文件
tar.gz 使用tar命令进行解压
tar -zxvf java.tar.gz
解压到指定的文件夹
tar -zxvf java.tar.gz -C /usr/java
Linux 重命名文件夹
linux下mv
命令既可以重命名,又可以移动文件或文件夹.
例子:将目录a
重命名为b
mv a b
文章评论
内网穿透为什么用https2http这个插件呢
这样外网访问是https。 但是内链都是http开头的。这样会导致css加载问题。
这是什么情况呢