新手项 FRP-penal+Nginx-proxy-manager的内网穿透

上班摸鱼摸不动了 :tieba_003:

目标:实现用公网域名访问局域网的服务,部署完成后,可以使用网页面版操作配置

设备:一台有公网IP的服务器,一台需要穿透的内网服务器,一个域名

前置条件:两台服务器上均安装了docker,域名已经解析到了公网服务器的ip(国内请自行解决备案问题

使用到的软件:frp-panelnginx-proxy-manager

第一步:在公网服务器上安装frp-panelnginx-proxy-manager

先放两个docker-compose,请自行为两个软件创建文件夹

frp-panel



version: '3'

services:

  frp-panel:

    image: vaalacat/frp-panel

    container_name: frp-panel

    network_mode: host

    restart: unless-stopped

    volumes:

      - ./frp-panel:/data  # 数据存储位置

    environment:

      - APP_GLOBAL_SECRET=xxx  # Master的secret注意不要泄漏,客户端和服务端的是通过Master生成的

      - MASTER_RPC_HOST={}  # 这里要改成你服务器的外部IP

      - MASTER_RPC_PORT=9009 #Master节点 RPC 端口,默认为9001,我因为与portainer冲突所以做了修改

      - MASTER_COMPATIBLE_MODE=true

nginx-proxy-manager


services:

  app:

    image: 'jc21/nginx-proxy-manager:latest'

    restart: unless-stopped

    ports:

      - '80:80'

      - '81:81'

      - '443:443'

    volumes:

      - ./data:/data

      - ./letsencrypt:/etc/letsencrypt

再附赠一个docker镜像加速的服务,论坛帖子

第二步:配置Nginx

上面的安装完毕后打开{公网ip}:81,打开nginx-proxy-manager的面版

默认密码,建议登录后第一时间自行修改


Email:    [email protected]

Password: changeme

打开面版后创建一个这样的代理,代理面本身,ssl部分填入自己的邮箱,nginx-proxy-manager可以自己获取证书,非常非常的Nice,这样你就可以使用HTTPS访问你的nginx-proxy-manager。


同理,为frp-panel创建代理


进入如下界面,为你的你的域名创建一张泛域名的ssl证书,方便以后使用,这里仅用Cloudflare做演示(因为我的域名托管在CF上,其他的不是很清楚)

选择Let’s Encrypt,然后添加一个*.linux.do,你可写你的域名,我这里拿linux.do举例

然后去cloudflare创建一个令牌,替换红框里的token,点击保存,等待一会你就可以获得一个泛域名证书


第三步:配置frp-panel

进入服务端配置
填写ip、端口等信息,然后点击保存。

之后我们回到nginx-proxy-manager面版,为frp创建一个泛域名代理,如下图所示,SSL证书就选择上一步中获取的泛域名证书

在高级设置中填入如下代码:这里的ip是可以填你的公网ip,或者服务商为服务器提供的内网ip,端口填写你刚刚在frp-panel中填写的http端口

location / {
    proxy_pass http://172.17.0.1:8880;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_cache_bypass $http_upgrade;
    proxy_max_temp_file_size 0;
    proxy_redirect off;
    proxy_read_timeout 240s;
}


第四步:frp客户端端

在frp-penal上新建一个客户端,复制启动命令,应该是下面这样一串

frp-panel client -s ********-****-****-****-************ -i *******.c.frp -a *** -r ***.**.**.*** -c **** -p **** -e http
然后正确填入下面的docker-compose,在你的内网主机上启动客户端的就大工告成了

version: '3'
services:
  frp-panel-client:
    image: vaalacat/frp-panel
    container_name: frp-panel-client
    network_mode: host
    restart: unless-stopped
    command: client -s ********-****-****-****-************ -i *******.c.frp -a *** -r ***.**.**.*** -c **** -p **** -e http

总结

此时你可以再你的frp-penal上进行内网穿透的配置,不再需要文件配置,可以直接使用https访问,http会自动跳转https,并且不影响你vps其他服务的使用,依旧可以正常使用nginx-proxy-manager进行域名反代

之后的一切操作都可以在网页上进行操作了,如果加入portainer,那么绝大部分操作都可以网页进行了,可以省很多麻烦,给孩子点点赞吧

image

10 个赞

感谢 :tieba_087: 小白会了

感谢大佬分享

没有公网服务器_(:з」∠)_

感谢佬友分享

可以看看这个

npm挺好用的