nginx-proxy-manager 是一个基于 Nginx 的反向代理管理工具,它提供了一个简单易用的图形用户界面(GUI),使用户能够轻松配置和管理 Nginx 反向代理、SSL 证书和其他相关设置。
优势
易用性:提供了一个友好的图形用户界面,简化了 Nginx 配置和管理的复杂性。
自动化:支持自动获取和管理 SSL 证书(例如通过 Let's Encrypt)。
多域名支持:可以轻松管理多个域名及其相关配置。
开源:代码公开,可以根据需要进行修改和定制。
Docker 支持:可以通过 Docker 容器快速部署和运行。
劣势
功能限制:虽然适用于大多数常见的反向代理场景,但对于非常复杂和定制化的需求可能不够灵活。
资源消耗:带有图形界面的应用程序在资源消耗上比纯命令行工具要高一些。
依赖性:依赖 Docker 进行部署,可能不适用于所有环境。
适用平台
Windows、macOS、Linux
能否管理多个 Nginx 及 Nginx 集群
nginx-proxy-manager 主要用于管理单个 Nginx 实例,并不直接支持对多个 Nginx 实例或 Nginx 集群的管理。如果你需要管理多个 Nginx 实例,可以考虑搭建多个 nginx-proxy-manager 实例,分别管理不同的 Nginx 服务器。
管理其他的反向代理
nginx-proxy-manager 主要是为 Nginx 设计的,不能直接管理其他类型的反向代理服务器(例如 Apache 或 HAProxy)。如果你需要管理其他类型的反向代理服务器,可能需要寻找专门的管理工具或手动配置。
业务场景
1、托管多个站点
问题:需要托管多个站点,并为每个站点配置 SSL 证书。
解决方法:在 GUI 中添加多个 Proxy Host,为每个站点配置域名和 SSL 证书。
示例:在 GUI 中添加 example1.com 和 example2.com,并通过 Let's Encrypt 获取 SSL 证书。
2、开发环境中的服务转发
问题:在开发环境中,需要快速配置反向代理将请求转发到不同的服务。
解决方法:在 GUI 中添加 Proxy Host,将请求转发到开发服务器的不同端口。
示例:将 dev.example.com 转发到 localhost:3000。
3、负载均衡
问题:在高流量应用中,需要进行负载均衡。
解决方法:在 GUI 中配置多个后端服务器,实现请求分发。
示例:将 app.example.com 配置为轮询分发到 server1:8000 和 server2:8000
4、SSL 证书自动续期
问题:需要为站点配置自动续期的免费 SSL 证书。
解决方法:在 GUI 中选择 Let's Encrypt,并启用自动续期功能。
示例:为 secure.example.com 获取并自动续期 SSL 证书。
5、访问控制
问题:需要为特定站点配置访问控制,限制访问权限。
解决方法:在 GUI 中配置访问控制列表(ACL)。
示例:仅允许特定 IP 地址访问 private.example.com。
6、静态资源缓存
问题:需要配置静态资源缓存,提高站点性能。
解决方法:在 GUI 中配置 Nginx 缓存规则。
示例:为 static.example.com 配置静态文件缓存。
7、域名重定向
问题:需要将一个域名重定向到另一个域名。
解决方法:在 GUI 中配置域名重定向规则。
示例:将 old.example.com 重定向到 new.example.com。
8、WebSocket 支持
问题:需要为 WebSocket 应用配置反向代理。
解决方法:在 GUI 中启用 WebSocket 支持。
示例:将 ws.example.com 转发到 WebSocket 服务器。
9、日志监控
问题:需要配置 Nginx 日志以监控和分析流量。
解决方法:在 Docker 容器中配置日志卷,定期查看和分析日志。
示例:挂载日志卷 /var/log/nginx,定期分析访问日志。
产品截图
安装方法
创建一个 docker-compose.yml 文件,内容如下:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: always
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
db:
image: 'mysql:5.7'
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
Web 端访问
nginx-proxy-manager 提供了一个图形用户界面。启动容器后,可以通过浏览器访问 http://<your-server-ip>:81 进入管理界面。
默认账户密码
初始登录凭据:
电子邮件:admin@example.com
密码:changem
总结
nginx-proxy-manager 是一个强大且易用的 Nginx 反向代理管理工具,适合那些希望简化 Nginx 配置和管理的用户。它通过 Docker 容器进行部署,提供了一个友好的图形用户界面,方便用户进行各种配置。尽管没有公开 API 接口,功能上也足够满足大多数常见的反向代理需求。
官网:
https://nginxproxymanager.com/
项目地址:
https://github.com/NginxProxyManager/nginx-proxy-manager
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/7327.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~