Nginx-Proxy-Manager 是Nginx Web GUI( 可视化管理界面),为新手快速设置反向代理提供帮助。 它的主要目标是:

我创建这个项目是为了满足个人需要,为用户提供一种简单的方法来完成带有 SSL 终止的反向代理主机,而且它必须非常简单,以至于猴子都能做到。这个目标没有改变。虽然可能有高级选项,但它们是可选的,并且项目应该尽可能简单,以便进入这里的门槛很低。

feature

它主要的功能包括以下几个:

  • 基于Tabler的美观安全的管理界面
  • 在对 Nginx 一无所知的情况下轻松创建转发域、重定向、流和 404 主机
  • 使用 Let’s Encrypt 的免费 SSL 或提供您自己的自定义 SSL 证书
  • 主机的访问列表和基本 HTTP 身份验证
  • 超级用户可用的高级 Nginx 配置
  • 用户管理、权限和审计日志

安装

这里我们Docker Compose安装启动。

  1. 你需要预先安装了Docker Compose 环境。
  2. 创建docker-compose.yml
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '8080:80'
      - '81:81'
      - '8443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  1. 启动
docker-compose -d
  1. Dashboard

访问web界面 http://127.0.0.1:81

这么默认的用户名和密码是:

Email:    admin@example.com
Password: changeme

登入后,按提示重新设置用户名、密码即可。

  1. 主页面 home page

如成功登入,可以看到主页面如下:

实战 :反向代理Nginx-Proxy-Manage后台

如上述中,我们通过81端口可以访问GUI,下面,我们将通过反向代理,可以直接通过 http://your-site:8080即可访问GUI。

  1. 点击 【Proxy Hosts】,在界面Details选项添加如下图所示:

  1. 访问 http://your-site:8080

说明成功了

  1. 如果想要关闭代理,点击编辑【Proxy Host】 的 Enable,详细如下

  2. 再访问,会跳出404界面

以上。

小结

本文主要简介Nginx可视化管理平台Nginx-Proxy-Manager及主要功能,为配置强大Nginx代理功能降低门槛。通过一个实战案例:代理Manager后台,演示了基础使用方法。

参考

问题

在mac m1 构建的docker镜像(image:v1.0),在ubuntu上面运行报错:

smart-service | standard_init_linux.go:228: exec user process caused: exec format error

$ uname -m
 arm64

由于m1是arm64架构,而ubuntu的是x86_64架构,那有没有可以在mac上面构建x86_64的镜像的方法呢?

解决步骤

在 Docker 19.03+ 版本中可以使用

$ docker buildx build

命令使用 BuildKit 构建镜像。该命令支持 –platform 参数可以同时构建支持多种系统架构的 Docker 镜像。 更多参考:

https://docs.docker.com/engine/reference/commandline/buildx/

Sep1 启用experimental features

Docker 的 buildx 还是实验性功能,需要在 Docker Desktop 设置中开启。

Preferences > Experimental Features > Enable CLI experimental features

Sep2 创建builder

由于 Docker 默认的 builder 实例不支持同时指定多个 –platform,我们必须首先创建一个新的 builder 实例。

$ docker buildx create --use --name my_builder

国内环境使用:

  • 网易云镜像
$ docker buildx create --use --name=mybuilder --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master
  • 百度云镜像
$ docker buildx create --use --name=mybuilder --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master-baidu

查看实例详情:

docker buildx inspect --bootstrap

output:

$ docker buildx inspect --bootstrap
[+] Building 4.9s (1/1) FINISHED
 => [internal] booting buildkit                           
 => => starting container buildx_buildkit_my_builder0     
Name:   my_builder
Driver: docker-container

Nodes:
Name:      my_builder0
Endpoint:  unix:///var/run/docker.sock
Status:    running
Platforms: linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6

Sep3 构建

使用 $ docker buildx build 命令构建镜像

     docker buildx build
      –platform linux/amd64,linux/arm64  –push -t myusername:v2.0 .

  • –platfrom 不同的架构
  • –push 将构建好的镜像推送到 Docker 仓库

构建完 push 上去以后,可以查看远程仓库的 manifest:

 docker buildx imagetools inspect myusername:v2.0 

output:

$ docker buildx imagetools inspect myusername:v2.0 
Name:      myusername:v2.0 
MediaType: application/vnd.docker.distribution.manifest.list.v2+json
Digest:    sha256:c234123456XXXyyyy3a7123456XXXyyyyd28de6c376d2f123456XXXyyyy9edf2

Manifests:
  Name:      myusername:v2.0 @sha123456XXXyyyy777122
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/amd64

  Name:      myusername:v2.0 @sha123456XXXyyyy777123
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/arm64

显示已经支持不同架构

Sep4 测试

在Ubuntu下(v2.0镜像)运行

Status: Downloaded newer image for 
myusername:v0.2
Recreating my-service ... done 
my-service | INFO msg=[HTTP] server listening on: [::]:8000

正常运行 Succeed

总结

本文主要介绍 使用 buildx 构建多种系统架构支持的 Docker 镜像

参考:

jefffff

Stay hungry. Stay Foolish COOL

Go backend developer

China Amoy