Nginx Proxy Manager (NPM) 是一个基于Docker的轻量级反向代理管理工具,它提供了直观的Web界面来管理Nginx代理设置,特别适合在容器化环境中使用。本指南将介绍如何将Nginx Proxy Manager与Docker结合使用,快速搭建和管理容器化应用。
确保已安装Docker和Docker Compose。如果没有安装,可以使用以下命令:
# 安装Docker
curl -fsSL https://get.docker.com | sh
# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
创建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
environment:
DB_SQLITE_FILE: "/data/database.sqlite"
DISABLE_IPV6: "true"
docker-compose up -d
打开浏览器访问 http://服务器IP:81
,使用以下默认凭据登录:
- 邮箱: admin@example.com
- 密码: changeme
首次登录后请立即更改密码。
对于Docker容器,最佳实践是使用Docker网络:
创建一个共享网络:
docker network create proxy-network
修改NPM的docker-compose.yml,加入网络:
networks:
default:
name: proxy-network
对于需要代理的容器,在它们的docker-compose.yml中也加入同一网络:
networks:
default:
name: proxy-network
现在在NPM中可以使用容器名称作为"Forward Hostname"
NPM允许添加自定义Nginx配置片段:
nginx
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
可以为代理主机设置基本认证:
nginx
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
查看NPM容器日志:
docker-compose logs -f
定期备份NPM的数据目录(docker-compose.yml中映射的./data和./letsencrypt目录)
更新到最新版本:
docker-compose pull
docker-compose up -d
Nginx Proxy Manager与Docker的结合为容器化应用提供了简单高效的代理解决方案,大大简化了反向代理和SSL证书管理的复杂度。通过Web界面,即使不熟悉Nginx配置的用户也能轻松管理多个服务的代理规则,是现代化容器部署的理想选择。