插件窝 干货文章 如何利用Nginx Proxy Manager搭建高效的反向代理服务器

如何利用Nginx Proxy Manager搭建高效的反向代理服务器

Nginx Docker 配置 Compose 650    来源:    2025-04-11

使用Nginx Proxy Manager搭建高效反向代理服务器指南

Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,可以简化反向代理、SSL证书管理等操作。以下是详细搭建和使用指南:

一、安装准备

1. 系统要求

  • Linux服务器(推荐Ubuntu/Debian或CentOS)
  • Docker和Docker Compose已安装
  • 域名指向服务器IP

2. 安装Docker和Docker Compose

# Ubuntu/Debian
sudo apt update && sudo apt install -y docker.io docker-compose

# CentOS
sudo yum install -y docker docker-compose
sudo systemctl enable --now docker

二、安装Nginx Proxy Manager

1. 创建docker-compose.yml文件

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

2. 启动容器

mkdir -p npm/{data,letsencrypt}
cd npm
docker-compose up -d

三、初始配置

  1. 访问管理界面:http://服务器IP:81
  2. 默认登录凭证:
    • Email: admin@example.com
    • Password: changeme
  3. 首次登录后立即修改密码

四、配置反向代理

1. 添加代理主机

  1. 点击"Hosts" > "Proxy Hosts" > "Add Proxy Host"
  2. 配置项:
    • Domain Names: 你的域名 (如app.example.com)
    • Scheme: http/https
    • Forward Hostname/IP: 目标服务器IP或容器名
    • Forward Port: 目标服务端口
    • 勾选"Block Common Exploits"和"Websockets Support"(如需要)

2. SSL证书配置

  1. 在代理主机配置中点击"SSL"选项卡
  2. 选择"Request a new SSL Certificate"
  3. 填写邮箱,勾选"同意条款"
  4. 使用DNS验证或HTTP验证(推荐DNS验证更可靠)

五、高级配置技巧

1. 负载均衡配置

# 在docker-compose.yml中添加
  lb:
    image: 'jc21/nginx-proxy-manager:latest'
    depends_on:
      - app
    environment:
      - ENABLE_LOAD_BALANCING=true

2. 自定义Nginx配置

在代理主机设置的"Advanced"选项卡中添加:

# 示例:增加客户端最大上传大小
client_max_body_size 100M;

# 示例:自定义缓存设置
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;

3. 访问控制

  1. 在"Access Lists"中创建访问控制规则
  2. 可配置IP白名单/黑名单或HTTP基本认证

六、性能优化建议

  1. 启用HTTP/2:在SSL配置中勾选"HTTP/2 Support"
  2. 启用Brotli压缩nginx brotli on; brotli_comp_level 6; brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  3. 调整缓存设置nginx proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
  4. 连接优化nginx keepalive_timeout 30; client_header_timeout 10; client_body_timeout 10; send_timeout 10;

七、常见问题解决

1. 502 Bad Gateway错误

  • 检查目标服务是否运行
  • 检查防火墙是否放行目标端口
  • 在NPM日志中查找具体错误:docker-compose logs app

2. SSL证书不生效

  • 确保域名解析已生效
  • 检查80/443端口未被其他程序占用
  • 验证DNS记录是否正确(如使用DNS验证)

3. 性能问题

  • 检查服务器资源使用情况(CPU、内存)
  • 调整Nginx worker进程数: nginx worker_processes auto; events { worker_connections 1024; }

八、备份与恢复

1. 备份配置

# 备份数据和证书
tar -czvf npm_backup.tar.gz ./data ./letsencrypt

2. 恢复配置

# 停止容器
docker-compose down

# 恢复备份
tar -xzvf npm_backup.tar.gz

# 重新启动
docker-compose up -d

通过以上步骤,您可以快速搭建并优化一个高效的Nginx反向代理服务器。Nginx Proxy Manager的图形界面大大简化了Nginx的配置过程,同时保留了Nginx的高性能和灵活性。