老李头最近在楼道里逢人就夸:“我家娃把博客搬回家里了,嗖嗖快!”我表面淡定,心里早就乐开花。要知道,三天前他还在电话里哭嚎:“怎么外网看不了我写的诗?”我让他把路由器抱来,十分钟搭好内网穿透,WordPress瞬间从局域网小可怜升级成全球在线大明星。老李激动得要把珍藏的龙井送我,我摆手:茶就免了,教程拿走,下次别半夜打电话就行。
这事儿说来也简单,可里头弯弯绕绕足够写一本段子集。先讲原理:你家宽带运营商送的是大内网地址,外网访客找不到门牌号,于是得请一位“带路小哥”——内网穿透工具——把访客领到正确的房间。市面上小哥很多:frp、nps、Cloudflare Tunnel、ZeroTier……我这次给老李选的是frp,开源、稳、文档像邻家小妹一样亲切。
第一步:准备材料
1.一台24小时不关机的“中继服务器”(我直接薅了腾讯云轻量香港,29块一个月,老李说他众筹)。
2.家里那台跑WordPress的小主机(树莓派4B,1G内存跑得欢)。
3.域名一枚,我用的是 xiangrikui.li(别笑,老李姓李,向日葵是他老伴最爱)。
4.一点点Linux命令行勇气,老李说他年轻时练过五笔,不算事儿。
第三步:家里小主机唱戏
树莓派里同样下载对应ARM版frp,编辑 frpc.ini:
【common】
server_addr = 云主机公网IP
server_port = 7000
【web】
type = http
local_port = 80
custom_domains = xiangrikui.li
保存,启动:./frpc -c frpc.ini
此时外网访问
http://xiangrikui.li 就能看到WordPress,老李激动得拍桌子:“我孙女在美国也能看!”
第四步:HTTPS不能少
老李说诗得配绿锁才高雅。云主机上跑个Nginx,申请Let’s Encrypt证书,反向代理到 frp 的 80 端口。两行配置搞定:
proxy_pass
http://127.0.0.1:80;
proxy_set_header Host $host;
certbot --nginx 一键签发,老李直呼魔法。
第五步:自动启动
服务器和树莓派都写 systemd 服务,断电重启也不怕。老李把脚本抄进小本子,像珍藏武林秘籍。
尾声
夜里十一点,老李给我发微信:“阅读量破三百了!”我回他一个龇牙笑的表情。技术让诗飞向远方,也让老男孩重拾少年心气。谁说内网穿透只是冷冰冰的端口映射?它分明是把柴米油盐的日常,偷偷升级成了星辰大海的远方。
————————————————————
教程:零基础上手“内网穿透访问WordPress”
目标:让外网用户通过域名安全访问家里局域网里的WordPress站点。
一、名词解释
内网穿透:把局域网服务暴露到公网的技术统称。
frp:开源、跨平台的内网穿透工具,分服务端 frps 和客户端 frpc。
反向代理:在本教程中,指云主机上的 Nginx 把 443 端口流量转发到 frp。
二、准备工作
云服务器一台(Linux,公网IP,建议1H1G以上)。
局域网主机一台(已部署好WordPress,监听80端口)。
已备案域名一枚(国内云需备案,香港/海外可免)。
基础工具:SSH客户端、文本编辑器、sudo权限。
三、服务端(云主机)配置
编辑 /usr/local/frp/frps.ini
【common】
bind_port = 7000
vhost_http_port = 80
创建 systemd 服务
sudo nano /etc/systemd/system/frps.service
内容:
【Unit】
Description=frp server
After=network.target
【Service】
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Restart=always
【Install】
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
四、客户端(局域网主机)配置
编辑 /usr/local/frp/frpc.ini
【common】
server_addr = <云主机公网IP>
server_port = 7000
【web】
type = http
local_port = 80
custom_domains = yourdomain.com
创建 systemd 服务(同上,只需把 frps 改成 frpc)。
启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
五、域名解析
登录域名控制台,添加 A 记录:
yourdomain.com → 云主机公网IP
六、HTTPS 证书
云主机安装 Nginx:
sudo apt update && sudo apt install nginx
添加站点配置:
sudo nano /etc/nginx/sites-available/yourdomain
内容:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass
http://127.0.0.1:80;
proxy_set_header Host
host;proxysetheaderX−Real−IPremote_addr;
}
}
sudo ln -s /etc/nginx/sites-available/yourdomain /etc/nginx/sites-enabled/
安装 certbot 并签发证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
按提示输入邮箱、同意协议,完成后自动配置 443 端口。
七、验证
查看 frp 日志:
云主机:sudo journalctl -u frps -f
树莓派:sudo journalctl -u frpc -f
确保无报错。
八、常见问题
端口被墙:请确认云主机安全组放行 7000、80、443。
路由器未放行:局域网主机需固定IP,路由器关闭AP隔离。
WordPress后台样式错乱:在wp-config.php里加:
$_SERVER【'HTTPS'】 = 'on';
define('FORCE_SSL_ADMIN', true);
至此,外网即可安全稳定访问家里WordPress。祝你的诗与远方,一起在线。