Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,可帮助您轻松管理反向代理、SSL证书和访问控制。本方案提供快速部署NPM并优化其高并发性能的方法。
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装必要依赖
sudo apt install -y docker.io docker-compose
# 创建项目目录
mkdir -p npm/data npm/letsencrypt
cd npm
# 创建docker-compose.yml文件
cat > docker-compose.yml <<EOF
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
EOF
# 启动服务
docker-compose up -d
http://<服务器IP>:81
admin@example.com
changeme
# 进入NPM容器
docker exec -it npm_app_1 bash
# 编辑Nginx主配置文件
vi /etc/nginx/nginx.conf
添加以下优化参数:
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 4000;
use epoll;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 100000;
types_hash_max_size 2048;
# 其他原有配置...
}
# 编辑系统限制文件
sudo vi /etc/security/limits.conf
添加:
* soft nofile 100000
* hard nofile 100000
# 调整内核参数
sudo vi /etc/sysctl.conf
添加:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
应用更改:
sudo sysctl -p
在NPM管理界面中,为每个代理主机启用HTTP/2支持: 1. 进入主机配置 2. 在SSL选项卡中勾选"HTTP/2 Support"
# 安装监控工具
sudo apt install -y htop nmon
# 查看Nginx状态
docker exec -it npm_app_1 nginx -t
docker exec -it npm_app_1 nginx -s reload
# 查看实时访问日志
docker logs -f npm_app_1
# 分析高频率访问IP
docker exec -it npm_app_1 awk '{print $1}' /data/logs/proxy-host-*_access.log | sort | uniq -c | sort -nr | head -20
Q: 部署后无法访问管理界面 A: 检查防火墙设置,确保80、81、443端口开放:
sudo ufw allow 80/tcp
sudo ufw allow 81/tcp
sudo ufw allow 443/tcp
Q: 高并发时出现502错误 A: 增加后端服务的超时时间: 1. 在NPM管理界面中编辑代理主机 2. 在"Advanced"选项卡中添加:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
Q: SSL证书自动续签失败 A: 检查letsencrypt目录权限:
sudo chown -R 1000:1000 ./letsencrypt
docker-compose restart
通过以上方案,您可以快速部署并优化Nginx Proxy Manager,有效应对高并发访问场景。