本文介绍: 这个镜像是由 “ryaning/frps” 提供的,它是一个用于部署通过IP+ 端口访问方式实现了,那么我不想记IP,那么就通过域名方式进行访问。当容器启动后,frp 服务器就会在容器中运行使用挂载配置文件进行配置重启完成,查看服务器监听端口(其中5000和3000端口我们想要的)域名时,Nginx代理转发本地的 3000 端口域名时,Nginx代理转发本地的 5000 端口浏览器打开http://服务器IP:3000/进行访问创建目录用于存放容器持久存储卷。

(1)部署frps服务器

docker安装参考文档docker基本知识

1.创建目录

创建目录,用于存放容器持久存储

mkdir -p /data/frp

cd /data/frp
vim frps.ini

2.编辑配置文件

#进入 /data/frp 目录
cd /data/frp

#使用 Vim 编辑器打开 frps.ini 文件
vim frps.ini

配置文件如下

[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7001

vhost_http_port = 10080
vhost_https_port = 10443
 
token = abcd12345
dashboard_user = admin11
dashboard_pwd = admin11

#需要穿透内网服务1
[could]
type = tcp
local_ip = 192.168.31.100
local_port = 5000
remote_port = 5000

#需要穿透的内网服务2
[chat]
type = tcp
local_ip = 192.168.31.223
local_port = 3000
remote_port = 3000


....
此处省略若干个服务器可以根据自己需求修改这个配置文件添加修改代理规则然后保存退出 Vim 编辑器。

配置内容含义:

[common]:通用配置部分用于设置 frp 服务器基本参数bind_addr绑定的 IP 地址这里设置为 0.0.0.0,表示监听所有的网络接口bind_port服务绑定端口号这里设置为 7000。
dashboard_port:frp 仪表盘端口号这里设置为 7001。
vhost_http_port:虚拟主机 HTTP 端口号这里设置为 10080。
vhost_https_port:虚拟主机 HTTPS 端口号这里设置为 10443。
token访问 frp 服务器令牌这里设置为 abcd12345
dashboard_user:frp 仪表盘用户名这里设置为 admin11。
dashboard_pwd:frp 仪表盘密码这里设置为 admin11。


[could] 和 [chat]:代理规则部分用于定义具体的代理规则type:代理类型这里设置为 tcp表示 TCP 代理。
local_ip本地 IP 地址,这里设置为 192.168.31.100和192.168.31.223。
local_port:本地端口号,这里设置为 5000 和 3000。
remote_port:远程端口号,这里设置为 5000 和 3000。

3.拉取镜像

拉取启动一个名为 “frps” 的 Docker 镜像这个镜像是由 “ryaning/frps” 提供的,它是一个用于部署 frp 服务器的镜像

通过命令 docker pull ryaning/frps用于从 Docker Hub 上拉取 “ryaning/frps镜像本地

docker pull ryaning/frps

4.启动容器

通过命令 docker run 启动一个容器。这个容器使用了一些参数:

docker run --restart=always --network host -d -v /data/frp/frps.ini:/etc/frp/frps.ini --name frps ryaning/frps

当容器启动后,frp 服务器就会在容器中运行使用挂载的配置文件进行配置。

5.安全组配置

在云服务器的安全组中,如果你想要允许入方向连接到特定的端口,需要开放相应的端口。

以下是一般的步骤

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(2)部署frpc客户端

1.创建目录

创建目录,用于存放容器持久化存储卷

mkdir -p /data/frp
cd /data/frp

2.配置文件

vim frpc.ini

配置内容

[common]
server_addr = 120.78.156.217
server_port = 7000
token = abcd12345


[could]
type = tcp
local_ip = 192.168.31.100
local_port = 5000
remote_port = 5000



[chat]
type = tcp
local_ip = 192.168.31.223
local_port = 3000
remote_port = 3000

配置文件内容含义:

  1. [common] 部分定义了 frpc 的常规配置,包括 server_addrserver_porttoken。请确保这些值是正确的,并与 frps 服务器的配置相匹配
  2. [could] 部分定义了一个名为 could隧道,其类型tcp。该隧道本地192.168.31.100:5000 映射远程5000 端口。请确保本地远程的 IP 和端口设置正确
  3. [chat] 部分定义了一个名为 chat隧道,其类型也是 tcp。该隧道本地192.168.31.223:3000 映射到远程的 3000 端口。同样,请确保 IP 和端口设置正确

3.查看frpc docker镜像

docker search frpc

4.拉取snowdreamtech/frpc 镜像

docker pull snowdreamtech/frpc 

5.启动snowdreamtech/frpc 容器

docker run --restart=always --network host -d -v /data/frp/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc 

(3)重启访问frp

服务端重启

docker restart frps

客户端重启

docker restart frpc

查看监听服务

重启完成,查看服务器监听的端口(其中5000和3000端口是我们想要的)

[root@josh-clound frp]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1081/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1020/master         
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      550/rpcbind         
tcp6       0      0 :::3000                 :::*                    LISTEN      5268/frps           
tcp6       0      0 :::7000                 :::*                    LISTEN      5268/frps           
tcp6       0      0 :::7001                 :::*                    LISTEN      5268/frps           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1020/master         
tcp6       0      0 :::10080                :::*                    LISTEN      5268/frps           
tcp6       0      0 :::5000                 :::*                    LISTEN      5268/frps           
tcp6       0      0 :::10443                :::*                    LISTEN      5268/frps           
tcp6       0      0 :::111                  :::*                    LISTEN      550/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      5786/docker-proxy  

尝试访问

浏览器打开http://服务器IP:3000/进行访问

在这里插入图片描述

http://服务器IP:5000/ 进行访问

在这里插入图片描述

(4)配置nginx反向代理

通过IP+ 端口的访问方式实现了,那么我不想记IP,那么就通过域名方式进行访问。

docker安装nginx

1.创建挂载目录

用于将宿主机上的目录 /usr/local/nginx 与容器内的目录进行挂载

mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/log
mkdir -p /usr/local/nginx/html

2.创建临时用容器

docker run --name nginx -p 9001:80 -d nginx

3.复制临时容器的配置到宿主机

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/

4.创建Nginx容器

docker run 
-p 80:80 
--name nginx 
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d 
-v /usr/local/nginx/log:/var/log/nginx 
-v /usr/local/nginx/html:/usr/share/nginx/html 
-d nginx:latest
  • docker run:用于创建并运行一个新的容器。
  • -p 80:80:将容器的 80 端口映射到宿主机的 80 端口,这样可以通过宿主机的 IP 地址域名访问 Nginx 服务器。
  • --name nginx:指定容器的名称nginx
  • -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将宿主机上的 /usr/local/nginx/conf/nginx.conf 文件挂载到容器内的 /etc/nginx/nginx.conf 文件,用于配置 Nginx。
  • -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d:将宿主机上的 /usr/local/nginx/conf/conf.d 目录挂载到容器内的 /etc/nginx/conf.d 目录,用于存放 Nginx 的额外配置文件。
  • -v /usr/local/nginx/log:/var/log/nginx:将宿主机上的 /usr/local/nginx/log 目录挂载到容器内的 /var/log/nginx 目录,用于存放 Nginx 的日志文件。
  • -v /usr/local/nginx/html:/usr/share/nginx/html:将宿主机上的 /usr/local/nginx/html 目录挂载到容器内的 /usr/share/nginx/html 目录,用于存放 Nginx 的静态网页文件。
  • -d nginx:latest:使用 nginx:latest 镜像创建容器,并在后台运行

5.编辑nginx.conf配置文件

http模块添加两个server,分别用于处理两个不同域名chat.joshzhong.topcould.joshzhong.top

 #第一个服务器块用于处理 chat.joshzhong.top 域名的请求,配置如下server {
        listen       80;
        server_name  chat.joshzhong.top;


        location / {
            proxy_pass http://127.0.0.1:3000;
        }

    }
 
 #第二个服务器块用于处理 could.joshzhong.top 域名的请求,配置如下server {
        listen       80;
        server_name  could.joshzhong.top;


        location / {
            proxy_pass http://127.0.0.1:5000;
        }
    }

模块解释

当有请求访问 chat.joshzhong.top 域名时,Nginx 将代理转发到本地的 3000 端口;当有请求访问 could.joshzhong.top 域名时,Nginx 将代理转发到本地的 5000 端口

重载nginx

#重启即可,就不进docker容器reload了
docker restart nginx

域名访问

http://chat.joshzhong.top/
在这里插入图片描述

http://could.joshzhong.top/

在这里插入图片描述

原文地址:https://blog.csdn.net/qq_39689711/article/details/134756767

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29954.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注