反向代理 + 内网穿透 = 无需端口访问内网所有服务
本文最后更新于 2023-12-02,文章内容可能已经过时。
首先,我们需要明确一些概念。在这个场景中,FRP(Fast Reverse Proxy)将用于内网穿透,将你的内网服务暴露到公网。Nginx Proxy Manager将用于管理你的反向代理配置,它将运行在你的VPS(Virtual Private Server)上。以下是详细的步骤:
步骤1:设置VPS
我的Nginx Proxy Manager是安装在一台闲置的 Mac mimi 上,用了桌面版的 Portainer,来运行 NPM。常见的家用 Nas 会占用 443 端口(我在使用群晖搭建时发现),请注意这一点。
#安装 portainer 的命令
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
-
首先,你需要购买一台VPS,并确保你能够通过SSH访问它。(实际操作过程中,这台 vps 只需要安装 fprs)
-
安装Docker和Docker Compose。在Ubuntu系统上,你可以使用以下命令:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
步骤2:安装和配置Nginx Proxy Manager
- 在你的VPS上创建一个docker-compose.yml文件,例如:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./config.json:/app/config/production.json
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- 在相同的目录下创建一个config.json文件,例如:
{
"database": {
"engine": "knex-native",
"knex": {
"client": "sqlite3",
"connection": {
"filename": "/data/database.sqlite"
}
}
}
}
-
运行
docker-compose up -d
来启动Nginx Proxy Manager。 -
打开浏览器,访问
http://your-vps-ip:81
,使用默认的用户名admin@example.com
和密码changeme
登录。 -
更改默认的用户名和密码。
步骤3:设置FRP服务器
-
在你的VPS上下载FRP。你可以从GitHub下载最新的版本。
-
解压下载的文件,并进入解压后的目录。
-
创建一个frps.ini文件,例如:
[common]
bind_port = 7000
token = zhoufeifan
- 运行
./frps -c ./frps.ini
来启动FRP服务器。
步骤4:设置FRP客户端
-
在你的内网机器上下载和解压FRP。
-
创建一个frpc.ini文件,例如:
[common]
server_addr = your-vps-ip
server_port = 7000
[NPM]
type = tcp
local_ip = 192.168.100.100
local_port = 443
remote_port = 443
- 运行
./frpc -c ./frpc.ini
来启动FRP客户端。
步骤5:配置Nginx Proxy Manager
-
返回到Nginx Proxy Manager的界面。
-
点击 "Proxy Hosts",然后点击 "Add Proxy Host"。
-
在 "Domain Names" 字段输入你的域名。
-
在 "Forward Hostname / IP" 字段输入 " 内网 ip",在 "Forward Port" 字段输入 "服务端口号"。
-
点击 "Save"。
不要忘记添加证书。
完成以上步骤后,你应该可以通过你的域名访问你的内网服务了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ONEISALL !