Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,可以简化反向代理、SSL证书管理和负载均衡配置。下面我将详细介绍如何使用NPM实现负载均衡和高可用性。
安装Docker和Docker Compose(如果尚未安装):
# Ubuntu/Debian
sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable --now docker
创建NPM安装目录并下载docker-compose.yml:
mkdir -p ~/nginx-proxy-manager
cd ~/nginx-proxy-manager
curl -L https://bit.ly/npm-docker-compose -o docker-compose.yml
启动NPM:
docker-compose up -d
访问管理界面:
http://服务器IP:81
admin@example.com
changeme
(首次登录后立即修改)配置基本设置:
lb.example.com
)http
或 https
在"Custom Locations"或"Advanced"选项卡中配置负载均衡:
upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
# 负载均衡方法(默认round-robin)
# least_conn; # 最少连接
# ip_hash; # IP哈希
# hash $request_uri consistent; # 一致性哈希
}
server {
location / {
proxy_pass http://backend;
include proxy_params;
}
}
NPM支持多种负载均衡算法:
配置示例:
upstream backend {
least_conn; # 使用最少连接算法
server 192.168.1.101:8080 weight=3; # 权重3,接收更多请求
server 192.168.1.102:8080;
server 192.168.1.103:8080 max_fails=3 fail_timeout=30s; # 健康检查
}
NPM可以监控后端服务器健康状态:
server {
location /health {
proxy_pass http://backend;
health_check interval=10s fails=3 passes=2 uri=/health;
}
}
多节点部署:
使用Keepalived实现VIP:
# 安装Keepalived
sudo apt install keepalived
# 配置/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass yourpassword
}
virtual_ipaddress {
192.168.1.200/24
}
}
会话保持:
upstream backend {
ip_hash;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
故障转移:
server 192.168.1.101:8080 backup; # 作为备份服务器
慢启动:
server 192.168.1.101:8080 slow_start=30s;
申请Let's Encrypt证书:
强制HTTPS和HTTP/2:
HSTS配置:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
启用缓存:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
连接池优化:
upstream backend {
keepalive 32;
server 192.168.1.101:8080;
}
server {
location / {
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
缓冲区优化:
proxy_buffers 16 32k;
proxy_buffer_size 64k;
proxy_busy_buffers_size 128k;
访问日志:
nginx
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Prometheus监控:
错误监控:
error_log /var/log/nginx/error.log warn;
502 Bad Gateway:
负载不均衡:
SSL证书问题:
通过以上配置,您可以使用Nginx Proxy Manager构建一个高效、可靠的负载均衡和高可用性解决方案,同时保持配置的简洁性和可管理性。