1、frp

frp 可以将本机的 8080 服务端口暴露到公网上,让公网服务器成为中转站,让用户直接访问到本机服务。

2、子域名的使用

1、在阿里云的 DNS服务器 中配置一级域名和二级域名,并指向阿里云服务器 IP 地址。

2、在阿里云服务器中的 Nginx 中配置一级域名和二级域名访问的程序端口。

其中,通过配置子域名的方式可以做到路由的隔离,防止服务1和服务2的路由混乱。

3、frpc 暴露多个服务端口

修改 frpc.toml 文件,注册多个服务端口

serverAddr = "59.110.xxx.xx"
serverPort = 7000
auth.token = "2a9286bfd0abf55c"

# 博客服务
[[proxies]]
name = "JTHaloBlog"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8090
remotePort = 8090

# docker 镜像仓库
[[proxies]]
name = "docker registry"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5000
remotePort = 5000

# docker 镜像仓库 ui 
[[proxies]]
name = "docker registry ui"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5001
remotePort = 5001

# jenkins  
[[proxies]]
name = "jenkins"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080

windows win + r 运行 services.msc ,找到 FRPC Service 重启

3.1、docker 镜像仓库

原 docker 镜像搭建

DockerImageRegistyCompose.yaml
执行 shell :
docker compose -f D:\work\env\docker\DockerImageRegistry\DockerImageRegistyCompose.yaml up -d

services:
  registry:
    image: registry:3.1.1
    container_name: jt-registry
    restart: on-failure:3
    networks:
      - jt_registry_network
    volumes:
      - D:\work\env\docker\DockerImageRegistry\registry\lib:/var/lib/registry # 镜像数据、仓库元数据
    ports:
      - 15000:5000
    environment:
      - REGISTRY_STORAGE_DELETE_ENABLED=true  # 允许删除镜像
  registry-ui:
    image: joxit/docker-registry-ui:2.6.0-debian
    container_name: jt-registry-ui
    restart: on-failure:3
    networks:
      - jt_registry_network
    ports:
      - 15001:80
    environment:
      - TZ=Asia/Shanghai
      - REGISTRY_URL=http://localhost:15001    # 指向仓库
      - NGINX_PROXY_PASS_URL=http://registry:5000
      - REGISTRY_TITLE=JT私有镜像仓库
      - DELETE_IMAGES=true                   # 允许界面删除镜像
      - SINGLE_REGISTRY=true
    depends_on:
      - registry

networks:
  jt_registry_network:
    driver: bridge

存在问题:

1、docker registry 没有用户名密码

2、通过公网访问 docker registry ui 时,存在跨域

重新创建 docker registry

docker-registry-compose.yaml :

docker compose -f D:\work\env\docker\registry\docker-registry-compose.yaml up -d

services:
  # 自动生成账号密码的初始化容器
  registry-auth:
    image: httpd:2.4.67
    container_name: jt-registry-auth
    restart: on-failure:3
    networks:
      - jt_registry_network
    volumes:
      - D:\work\env\docker\registry\registry\auth:/auth
    # 在这里改你的 用户名 和 密码
    command: >
      sh -c "
      mkdir -p /auth &&
      htpasswd -Bbn admin 123456 > /auth/htpasswd
      "
  # 镜像仓库容器
  registry:
    image: registry:3.1.1
    container_name: jt-registry
    restart: on-failure:3
    networks:
      - jt_registry_network
    volumes:
      - D:\work\env\docker\registry\registry\lib:/var/lib/registry # 镜像数据、仓库元数据
      - D:\work\env\docker\registry\registry\auth:/auth  # 挂载密码文件夹
    ports:
      - 15000:5000
    environment:
      - REGISTRY_STORAGE_DELETE_ENABLED=true  # 允许删除镜像
      # 开启认证 ↓↓↓
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
    depends_on:
      - registry-auth
# 镜像仓库 UI 容器
  registry-ui:
    image: joxit/docker-registry-ui:2.6.0-debian
    container_name: jt-registry-ui
    restart: on-failure:3
    networks:
      - jt_registry_network
    ports:
      - 15001:80
    environment:
      - TZ=Asia/Shanghai
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=JT私有镜像仓库
      - DELETE_IMAGES=true                   # 允许界面删除镜像
      # - REGISTRY_URL=http://localhost:15001    # 指向仓库
      - NGINX_PROXY_PASS_URL=http://registry:5000
       # 开启 UI 登录 ↓↓↓
      - REGISTRY_SECURED=true
    depends_on:
      - registry

networks:
  jt_registry_network:
    driver: bridge

3.2、配置子域名及 nginx 路由

首先修改 /JT/nginx/conf/nginx.conf
其次在阿里云域名管理中增加子域名配置

3.3、服务HTTP不安全,改为HTTPS

1、阿里云申请 ssl 证书,个人免费 3 个月,3 个月后要重新申请,且,每个子域名也要一个ssl证书。

2、申请成功后,下载证书,放到服务器上。

3、通过 nginx.conf 配置证书。

4、重启 nignx。