跳转到内容

Nginx Proxy Manager:图形化反向代理

给 Nginx 加一个界面:添加域名、指向后端服务、申请证书,几步完成,不用手写配置文件。

适合谁

服务数量超过三四个,开始记不住端口号,或者需要用 HTTPS 访问。

反向代理不会让后端变安全

它只负责转发。后端应用如果有弱密码或已知漏洞,通过代理一样能被利用。对外开放之前,逐个确认后端应用本身有认证且版本较新。

部署

yaml
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    volumes:
      - /vol1/docker/npm/data:/data
      - /vol1/docker/npm/letsencrypt:/etc/letsencrypt

81 是管理界面端口,不要把它暴露到公网。首次登录后立刻修改默认账号密码。

证书怎么申请

两种验证方式:

  • HTTP 验证:需要 80 端口能从公网访问。
  • DNS 验证:通过域名服务商的 API 完成,不需要暴露任何端口,内网服务也能拿到受信任的证书。推荐这种。

申请后确认自动续期任务正常,并配置续期失败的告警——证书过期是典型的静默失败。

数据与备份

data 目录包含所有代理配置和数据库,letsencrypt 目录包含证书。两个都要备份,否则重建时要重新申请所有证书。

已知坑

  • 80/443 端口被其他服务占用时无法启动,先用 ss -tlnp 确认。
  • 后端填写 NAS 自身 IP 时,注意容器网络下 127.0.0.1 指的是容器自己,见网络模式
  • 改配置后若不生效,先确认浏览器和 DNS 缓存。

参考资料

fnOS 非官方中文使用指南,与飞牛官方无隶属关系。