Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形化管理工具,简化了反向代理和路由配置。其核心路由功能允许您:
适用场景:不同子域名指向不同后端服务
配置方法:
1. 添加代理主机
2. 在"Details"选项卡设置域名(如 app1.example.com
)
3. 指定目标服务IP和端口
优点: - 配置简单直观 - 浏览器友好 - 支持通配符证书
适用场景:同一域名下不同路径指向不同服务
配置方法:
1. 添加代理主机
2. 在"Advanced"选项卡添加自定义位置块:
location /api {
proxy_pass http://backend-api:3000;
}
location /app {
proxy_pass http://frontend-app:8080;
}
优点: - 无需多个域名 - 统一入口点 - 适合微服务架构
配置方法: 1. 创建"Upstream"定义多个后端服务器 2. 选择负载均衡算法: - 轮询(默认) - 最少连接 - IP哈希(会话保持)
示例配置:
upstream backend {
server 192.168.1.10:3000;
server 192.168.1.11:3000;
server 192.168.1.12:3000;
}
配置方法:
1. 安装GeoIP模块(需自定义NPM构建)
2. 在高级配置中添加:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $nearest_server {
default "us-backend";
CN "cn-backend";
EU "eu-backend";
}
配置方法:
使用Nginx的$http_user_agent
变量:
location / {
if ($http_user_agent ~* "(mobile|android|iphone)") {
proxy_pass http://mobile-backend;
}
proxy_pass http://desktop-backend;
}
策略类型 | 适用场景 | 性能影响 | 复杂度 | 维护成本 |
---|---|---|---|---|
基于域名 | 多子域名环境 | 低 | 低 | 低 |
基于路径 | 微服务/单一入口 | 中 | 中 | 中 |
负载均衡 | 高可用需求 | 中 | 中 | 中 |
地理位置 | 全球部署 | 高 | 高 | 高 |
设备类型 | 多终端适配 | 中 | 中 | 中 |
推荐选择流程: 1. 确定业务需求(是否需要会话保持、全球部署等) 2. 评估基础设施能力(是否支持GeoIP等高级模块) 3. 考虑未来扩展性 4. 从简单策略开始,按需升级
docker logs npm
在高级配置中添加:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
X-Forwarded-Proto
头部设置正确通过合理选择和配置路由策略,Nginx Proxy Manager可以成为您微服务架构、多环境部署和全球应用分发的高效网关解决方案。