Nginx 是一个高性能的HTTP和反向代理web服务器,其主要的特点就是快,但是配置起来相对有点麻烦,对于新手朋友来说,很不友好,今天给大家推荐一款可视化的Nginx配置管理工具,开箱即用,支持 Docker 一键部署,可以让用户通过 Web 界面在线配置、管理 Nginx 服务,支持转发、重定向、SSL 证书、高级配置等功能。
开源地址:https://github.com/NginxProxyManager/nginx-proxy-manager
项目目标
为用户提供一种简单的方法来完成带有 SSL 终止的反向代理主机,并且非常简单,虽然可能有高级选项,但它们是可选的,并且项目应尽可能简单,以便进入门槛较低。
特征
- 基于 Tabler 的美观且安全的管理界面
- 无需了解 Nginx 即可轻松创建转发域、重定向、流和 404 主机
- 使用 Let's Encrypt 免费 SSL 或提供您自己的自定义 SSL 证书
- 主机的访问列表和基本 HTTP 身份验证
- 超级用户可用的高级 Nginx 配置
- 用户管理、权限和审核日志
快速设置
安装 Docker 和 Docker-Compose
创建一个与此类似的 docker-compose.yml 文件:
代码语言:javascript复制version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
这是所需的最低配置。
通过运行调出堆栈
代码语言:javascript复制docker-compose up -d
# If using docker-compose-plugin
docker compose up -d
登录管理界面
http://127.0.0.1:81 当你的 Docker 容器运行时,在管理界面的端口上连接到它。有时,由于密钥的原因,这可能需要一点时间。默认管理员用户:
代码语言:javascript复制Email: admin@example.com
Password: changeme
使用此默认用户登录后,系统会立即要求修改详细信息并更改密码。
截图
高级配置
使用 Docker 网络
对于那些在与 NPM 相同的 Docker 主机上的 Docker 中运行一些上游服务的人来说,这里有一个技巧可以更好地保护事情。通过创建自定义 Docker 网络,您无需将上游服务的端口发布到所有 Docker 主机的接口。
创建一个网络,即“scoobydoo”:
代码语言:javascript复制docker network create scoobydoo
然后将以下内容添加到 docker-compose.ymlNPM
和此 Docker 主机上运行的任何其他服务的文件中:
networks:
default:
external: true
name: scoobydoo
看一个 Portainer 的例子:
代码语言:javascript复制version: '3.8'
services:
portainer:
image: portainer/portainer
privileged: true
volumes:
- './data:/data'
- '/var/run/docker.sock:/var/run/docker.sock'
restart: unless-stopped
networks:
default:
external: true
name: scoobydoo
现在,在 NPM UI 中可以创建一个代理主机,并将其 portainer 用作主机名和端口 9000。尽管此端口未在 docker-compose
文件中列出,但它已由 Portainer Docker
映像“公开”,并且在此 Docker 网络之外的 Docker 主机上不可用。服务名称用作主机名,因此请确保使用同一网络时你的服务名称是唯一的。
Docker 健康检查
构建 Dockerfile 此项目的不包含 a HEALTHCHECK
,但可以通过将以下内容添加到文件中的服务来选择使用此功能 docker-compose.yml:
healthcheck:
test: ["CMD", "/bin/check-health"]
interval: 10s
timeout: 3s
开源地址:https://github.com/NginxProxyManager/nginx-proxy-manager
END