基于Nginx的内网域名管理
# 背景
在内网中有很多资源平常需要使用 ip:端口
访问,而有一些则使用自签证书的 https 访问,每隔一段时间就不记得 ip 和端口号,因此打算使用 Nginx 反向代理访问这些资源,之前是使用宝塔中的 nginx 来管理,但宝塔的免费证书签发只能签发二级的泛域名证书如 *.example.com
,但我需要 *.lan.example.com
,不够优雅,因此打算基于原版的 Nginx + acme.sh
来实现。
本来打算使用 Nginx + acme.sh
来实现,在实现过程中发现了一个开源项目 Nginx Proxy Manager
,他完全满足了我的需求,而且是可视化的,非常 nice。
因此本文变成了如何使用 Nginx Proxy Manager
# 安装 Docker
参考:「Linux」一键安装 Docker | NipGeihou's blog
# 编写 Docker Compose
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
docker compose up -d
# 访问
部署成功后通过 http://0.0.0.0:81
访问,首次登录的账号:
Email: [email protected]
Password: changeme
其他就按页面提示操作即可。
# 反代同宿主机服务
直接使用 127.0.0.1:xxx
是无法反代的,可以在 服务
的 docker compose 添加:
networks:
default:
external: true
name: nginx-proxy-manager_default
具体 npm 默认的网络是不是 nginx-proxy-manager_default
,可通过 docker network ls
查看
# 遇到的坑
我的 DNS 使用 cloudflare,申请证书是使用 Global API Key
不行,需要使用 另外创建的受限API 令牌
。
# 参考
上次更新: 2024/09/24, 16:49:56