前言:最近生成图片的ai很火,国内也有不少这样的网站,但是一般都需要钱,这时候自己想用,又不想花钱,就只能在本地服务器搭建一个ai生成图片的服务,再通过内网穿透,从公网访问到这个本地搭建的服务。
获取frp的压缩包
访问下面这个网页Releases · fatedier/frp (github.com),这里下载最新版的v0.50.0的包。
可以看到这里有很多版,我服务器的CPU是x86_64架构(linux可以使用uname -a 这个命令查看CPU架构),选择的frpServer是frp_0.50.0_linux_amd64.tar.gz这个版本, 客户端是Windows系统所以frpClient 是frp_0.50.0_windows_amd64.zip这个版本。
Server端部署
1.发送到服务器上
使用以下命令将服务端需要的包发到远程服务器上
scp C:\Users\admin\Downloads\frp_0.50.0_linux_amd64.tar.gz root@ip:/home/docker/frp
2.创建指定文件
#创建frps.ini文件 cd /home/docker/frp && vim frps.ini #编写配置 [common] 也需要保留 [common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # http服务需要使用 vhost_http_port = 8877 # 授权码,请改成更复杂的 # 这个token之后在客户端会用到 token = 123456 # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = admin dashboard_pwd = admin enable_prometheus = true # frp日志配置 log_file = ./frps.log log_level = info log_max_days = 3
3.创建dockerfile
vi dockerfile FROM ubuntu MAINTAINER zzy <358343917@qq.com> ARG VERSION=0.50.0 WORKDIR /tmp COPY ./frp_${VERSION}_linux_amd64.tar.gz frp_${VERSION}_linux_amd64.tar.gz RUN set -x \ && tar -zxvf frp_${VERSION}_linux_amd64.tar.gz \ && mv frp_${VERSION}_linux_amd64 /var/frps \ && mkdir -p /var/frps/conf COPY ./frps.ini /var/frps/conf/frps.ini VOLUME /var/frps/conf WORKDIR /var/frps ENTRYPOINT ./frps -c ./conf/frps.ini
解释一下上面的意思 从 /home/docker/frp文件夹下复制frp文件到docker容器中/tmp目录下,在容器内解压该文件并且移动到/var/frps路径下,在容器内创建文件夹/var/frps/conf,将/home/docker/frp/frps.ini文件复制到容器内 /var/frps/conf/frps.ini 这个文件。挂载一个卷,容器启动时默认执行 /var/frps/frps -c /var/frps/conf/frps.ini
4.构建dockerimage
#注意 name = 名称 tag = 版本号 name:tag后面有个. 代表当前目录, 也可以修改成 /home/docker/frp docker build -t name:tag . #示例 docker build -t zzy/frp:0.50.0 .
5.编写docker-compose
因为要将conf目录挂载在/home/docker/frps/conf/目录下,所以首先将/home/docker/frp下的frps.ini复制到 /home/docker/frps/conf/目录下
mv /home/docker/frp/frps.ini /home/docker/frps/conf/
version: '3.1' services: frp: image: zzy/frp:0.50.0 container_name: frp volumes: - /home/docker/frps/conf:/var/frps/conf ports: - 7000:7000 - 7500:7500 - 8877:8877 restart: always
启动
docker-compose up -d frp
这个时候访问 ip:7500 ,输入账号密码后,应该就能看到这个页面了
如果是云服务器的话,记得开放7500端口
Client端部署
client就很简单了, 复制下下面的配置到frpc.ini文件中然后使用 cmd转到对应文件夹 输入 frpc.exe 启动。
[common] server_addr = 云服务器地址 server_port = 7000 token = 123456 log_file = ./frpc.log log_level = info [home] #连接方式 http type = http #内网服务器地址 local_ip = 127.0.0.1 #内网服务器端口 local_port = 8080 #外网HTTP端口 remote_port = 8877 #外网的域名 通过访问这个域名和端口找到这个服务 custom_domains = www.zzy1blog.cn
启动成功的话,我们登录管理页面,就能看到连接的服务了。如下:
编写本地服务测试类
@Slf4j @Controller @RequestMapping(value = "/test") @ResponseBody public class TestController { @GetMapping("/message") public void testNoneIntercept(HttpServletRequest httpServletRequest, HttpServletResponse response,String message) throws Exception { response.setContentType("text/event-stream"); response.setCharacterEncoding("UTF-8"); response.getWriter().write("来自本地服务器"+message); } }
application.yaml配置
server: port: 8080
访问: www.zzy1blog.cn:8877/frp/servers?message=访问本地服务器
反代成功
配置nginx反代frp
nginx配置
http { server { listen 80; #请填写绑定证书的域名 server_name zzy1blog.cn; location /frp/servers { proxy_pass http://localhost:8877; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
重启nginx容器
docker-compose stop nginx docker-compose up -d nginx
访问 http://www.zzy1blog.cn/frp/servers?message=访问本地服务器2
搞定!
文章源地址 :使用docker搭建frp在云服务器上调用本地服务器的代码 – 我觉得大阳很强的blog