它开箱即用支持 Docker 一键部署,可以让用户通过 Web 界面在线配置、管理 Nginx 服务,支持转发、重定向、SSL 证书、高级配置等功能。图片
项目目标
为用户提供一种简单的方法来完成带有 SSL 终止的反向代理主机,并且非常简单,虽然可能有高级选项,但它们是可选的,并且项目应尽可能简单,以便进入门槛较低。
特征
基于 Tabler 的美观且安全的管理界面
无需了解 Nginx 即可轻松创建转发域、重定向、流和 404 主机
使用 Let’s Encrypt 免费 SSL 或提供您自己的自定义 SSL 证书
主机的访问列表和基本 HTTP 身份验证
超级用户可用的高级 Nginx 配置
用户管理、权限和审核日志
快速设置
安装 Docker 和 Docker-Compose
创建一个与此类似的 docker-compose.yml 文件:
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
这是所需的最低配置。
通过运行调出堆栈
docker-compose up -d
# If using docker-compose-plugin
docker compose up -d
登录管理界面
http://127.0.0.1:81 当你的 Docker 容器运行时,在管理界面的端口上连接到它。有时,由于密钥的原因,这可能需要一点时间。默认管理员用户:
Email: admin@example.com
Password: changeme
使用此默认用户登录后,系统会立即要求修改详细信息并更改密码。
截图
图片图片图片图片图片图片
高级配置
使用 Docker 网络
对于那些在与 NPM 相同的 Docker 主机上的 Docker 中运行一些上游服务的人来说,这里有一个技巧可以更好地保护事情。通过创建自定义 Docker 网络,您无需将上游服务的端口发布到所有 Docker 主机的接口。
创建一个网络,即“scoobydoo”:
docker network create scoobydoo
然后将以下内容添加到 docker-compose.ymlNPM 和此 Docker 主机上运行的任何其他服务的文件中:
networks:
default:
external: true
name: scoobydoo
看一个 Portainer 的例子:
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
传送门
开源协议:MIT license
开源地址:https://github.com/NginxProxyManager/nginx-proxy-manager
-END-