Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,虽然它本身没有内置灰度发布功能,但我们可以通过一些配置技巧来实现基本的HTTP请求灰度发布。以下是实现方案:
准备环境:
配置步骤:
# 在NPM的Advanced配置中添加以下内容
server {
# ...其他原有配置...
set $gray_release "off";
# 检查是否存在灰度cookie
if ($http_cookie ~* "gray_release=true") {
set $gray_release "on";
}
location / {
# 默认代理到稳定版
proxy_pass http://stable-service;
# 如果有灰度cookie则代理到灰度版
if ($gray_release = "on") {
proxy_pass http://gray-service;
}
}
}
gray_release=true
的cookie即可访问灰度版本# 在Advanced配置中添加
map $http_x_gray_release $backend {
default http://stable-service;
"true" http://gray-service;
}
server {
# ...其他原有配置...
location / {
proxy_pass $backend;
}
}
X-Gray-Release: true
使用NPM的负载均衡功能:
配置示例:
上游服务器配置:
- 稳定版: weight=90
- 灰度版: weight=10
location / {
# 默认代理到稳定版
proxy_pass http://stable-service;
}
location /gray/ {
# 灰度路径代理到灰度版
proxy_pass http://gray-service/;
# 可选:重写URL去掉/gray前缀
rewrite ^/gray/(.*)$ /$1 break;
}
缓存问题:
会话保持:
监控:
回滚机制:
如果需要更复杂的灰度发布策略,可以考虑:
Nginx Proxy Manager虽然提供了友好的UI界面,但复杂场景下可能需要直接编辑Nginx配置文件来实现更灵活的灰度发布策略。