Nginx Proxy Manager部署教程

## 为什么要用Nginx Proxy Manager 手写Nginx配置太烦了,特别是SSL证书续签、反向代理规则这些重复劳动。Nginx Proxy Manager(简称NPM)给了一个Web界面,点几下就能配好域名转发、自动申请Let’s Encrypt证书。适合自己搭服务、或者给客户做演示环境用。 ## 环境准备 一台装了Docker和Docker Compose的Linux机器。我用的是雨云的云服务器,2核4G配置,跑NPM加几个小服务完全够用,性价比不错,而且网络稳定。系统是Ubuntu 22.04。 ## 部署步骤 ### 1. 创建目录和配置文件
mkdir -p /opt/npm && cd /opt/npm
touch docker-compose.yml
### 2. 编写docker-compose.yml
version: '3.8'
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
解释下: – 80和443是Nginx的HTTP/HTTPS端口,必须暴露 – 81是NPM管理面板端口,可以改成别的,比如8081 – data目录存数据库和配置,letsencrypt存证书,这两个目录要持久化 – 用SQLite做数据库,省事,不用额外装MySQL ### 3. 启动服务
docker-compose up -d
等几秒,跑 `docker ps` 确认容器状态是Up。 ### 4. 访问管理面板 浏览器打开 `http://你的服务器IP:81` 默认登录信息: – 邮箱: admin@example.com – 密码: changeme 第一次登录会让你改邮箱和密码,建议立刻改掉。 ## 配置反向代理 ### 添加一个简单的代理 比如你有个服务跑在 `localhost:3000`,想通过 `api.yourdomain.com` 访问。 1. 登录NPM面板,点 “Proxy Hosts” -> “Add Proxy Host” 2. Domain Names填 `api.yourdomain.com` 3. Scheme选 `http`,Forward Hostname/IP填 `127.0.0.1`(如果服务在宿主机)或者容器名,Forward Port填 `3000` 4. 勾上 “Block Common Exploits” 和 “Websocket Support”(如果服务需要WebSocket) 5. 切到SSL标签,选 “Request a new SSL Certificate”,勾上 “Force SSL”,填你的邮箱,点Save 等几十秒,证书自动申请成功,就可以用 `https://api.yourdomain.com` 访问了。 ### 转发到Docker容器 如果服务也是Docker跑的,推荐用容器名或者自定义网络。比如:
# 在docker-compose.yml里
networks:
  npm_network:
    external: true
先创建网络:
docker network create npm_network
NPM和你的其他服务都加入这个网络,代理时Forward Hostname填服务名(比如 `myapp`)即可。这样比用IP稳定,重启容器也不怕IP变。 ## 常用操作 ### 修改默认端口 编辑docker-compose.yml,把81映射成别的端口:
ports:
  - '8081:81'
`docker-compose up -d` 重启。 ### 备份 NPM的所有配置都在 `/opt/npm/data` 和 `/opt/npm/letsencrypt` 里。直接打包这两个目录:
tar czf npm-backup-$(date +%Y%m%d).tar.gz data letsencrypt
恢复时解压到原位置重启容器即可。 ### 查看日志
docker logs -f nginx-proxy-manager_app_1
容器名可能不一样,用 `docker ps` 确认。 ## 常见问题 80/443端口被占用:检查是不是有Nginx或Apache在跑,停掉它们,或者改NPM的映射端口(但注意改端口后SSL证书验证会失败,因为Let’s Encrypt验证必须走80/443)。 证书申请失败:确保域名解析到了服务器IP,且80端口能访问。可以先用 `curl -I http://yourdomain.com/.well-known/acme-challenge/test` 测试。 面板打不开:检查防火墙,81端口是否开放。雨云的机器默认安全组要手动加规则,去控制台添加入站规则。 ## 总结(不是废话) NPM就是给懒人用的Nginx管理工具,适合不想记配置语法的场景。跑起来之后,加个代理点几下鼠标,证书自动续期,省心。如果服务量不多,一台雨云的低配机器跑NPM加几个容器完全扛得住。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容