Nginx 管理
Pigsty 在 INFRA 节点上安装 Nginx 作为所有 Web 服务的入口,默认监听在 80/443 标准端口上。
在 Pigsty 中,你可以通过修改配置清单,让 nginx 对外提供多种服务:
- 对外暴露 Grafana、VictoriaMetrics(VMUI)、Alertmanager、VictoriaLogs 等监控组件的 Web 界面
- 提供静态文件服务(如软件仓库、文档站,网站等)
- 代理自定义的应用服务(如内部应用、数据库管理界面,Docker 应用的界面等)
- 自动签发自签名的 HTTPS 证书,或者使用 certbot 申请免费的 Let’s Encrypt 证书
- 通过不同的子域名,使用单一端口对外暴露服务
基础配置
您可以通过 infra_portal 参数定制 Nginx 的行为:
infra_portal 是一个字典,每个键定义一个服务,值为服务的配置选项。
只有定义了 domain 的服务才会生成对应的 Nginx 配置文件。
home:特殊的默认服务器,用于处理首页和内置监控组件的反向代理- 代理服务:通过
endpoint指定上游服务地址,进行反向代理 - 静态服务:通过
path指定本地目录,提供静态文件服务
服务器参数
基本参数
| 参数 | 说明 |
|---|---|
domain | 可选的代理域名 |
endpoint | 上游服务地址(IP:PORT 或 socket) |
path | 静态内容的本地目录 |
scheme | 协议类型(http/https),默认 http |
domains | 额外的域名列表(别名) |
SSL/TLS 选项
| 参数 | 说明 |
|---|---|
certbot | 启用 Let’s Encrypt 证书管理,值为证书名称 |
cert | 自定义证书文件路径 |
key | 自定义私钥文件路径 |
enforce_https | 强制跳转 HTTPS(301 重定向) |
高级设置
| 参数 | 说明 |
|---|---|
conf | 指定 roles/infra/templates/nginx 中的模板文件 |
cache_dir | 开发版支持由角色创建缓存目录;其他部署需手动准备目录与权限 |
config | 通用模板中的自定义 Nginx 配置片段 |
index | 启用目录列表(用于静态服务) |
log | 自定义日志文件名称 |
websocket | 启用 WebSocket 支持 |
auth | 启用 Basic Auth 认证 |
realm | Basic Auth 认证提示语 |
指定 conf 时优先使用该模板;未指定时,角色才根据 home、path、endpoint 自动选择通用模板。
配置示例
反向代理服务
静态文件与目录列表
自定义 SSL 证书
使用 Let’s Encrypt 证书
强制 HTTPS 跳转
自定义配置片段
管理命令
域名解析
有三种方式将域名解析到 Pigsty 服务器:
- 公网域名:通过 DNS 服务商配置
- 内网 DNS 服务器:配置内部 DNS 解析
- 本地 hosts 文件:修改
/etc/hosts
本地开发时,在 /etc/hosts 中添加:
Pigsty 内置了 dnsmasq 服务,可以通过 dns_records 参数配置内部 DNS 解析。
HTTPS 配置
通过 nginx_sslmode 参数配置 HTTPS:
| 模式 | 说明 |
|---|---|
disable | 仅监听 HTTP(nginx_port) |
enable | 同时监听 HTTPS(nginx_ssl_port),默认签发自签名证书 |
enforce | 强制跳转到 HTTPS,所有 80 端口请求都会 301 重定向 |
对于自签名证书,有以下几种访问方式:
- 在浏览器中信任自签名 CA(下载地址
http://<ip>/ca.crt) - 使用浏览器安全绕过(Chrome 中输入 “thisisunsafe”)
- 为生产环境配置正规 CA 签发的证书或使用 Let’s Encrypt
Certbot 证书
Pigsty 支持使用 Certbot 申请免费的 Let’s Encrypt 证书。
启用 Certbot
- 在
infra_portal中为服务添加certbot参数,指定证书名称 - 配置
certbot_email为有效的邮箱地址 - 设置
certbot_sign为true在部署时自动签发
手动签发证书
或直接运行服务器上的脚本:
更多信息,请参阅 Certbot:申请与更新 HTTPS 证书
默认首页
Pigsty 的默认首页 home 服务器提供以下内置路由:
| 路径 | 说明 |
|---|---|
/ | 首页导航 |
/zh | 中文首页 |
/ui/ | Grafana 监控面板 |
/vmetrics/ | VictoriaMetrics VMUI |
/vlogs/ | VictoriaLogs 日志查询 |
/vtraces/ | VictoriaTraces 链路追踪 |
/vmalert/ | VMAlert 告警规则 |
/alertmgr/ | AlertManager 告警管理 |
/blackbox/ | Blackbox Exporter |
/pev | PostgreSQL Explain 可视化工具 |
/haproxy/<cluster>/ | HAProxy 管理界面(如有) |
这些路由允许通过单一入口访问所有监控组件,无需配置多个域名。
最佳实践
- 使用域名而非 IP:PORT 访问服务
- 正确配置 DNS 解析或 hosts 文件
- 为实时应用启用 WebSocket(如 Grafana、Jupyter)
- 生产环境启用 HTTPS
- 使用有意义的子域名组织服务
- 监控 Let’s Encrypt 证书过期时间
- 利用
config参数添加自定义 Nginx 配置
完整示例
以下是 Pigsty 公开演示站点 demo.pigsty.cc 使用的 Nginx 配置:
开发版维护参考
以下为维护 Pigsty 公共站点的专用开发模板,尚未随公开源码提供。普通门户使用前面的通用配置即可。
专用站点模板及迁移注意事项
conf | 用途与配置 |
|---|---|
repo.conf | 公共软件仓库;path 指向发布目录,只公开模板列出的目录和文件,关闭目录列表,拒绝未知 Host / SNI |
beta.conf | Pigsty、PGDG、发行版与 Docker 仓库代理缓存;cache_dir 指定缓存目录,缓存上限 80 GiB,保留至少 100 GiB 空闲空间 |
demo.conf | 演示服务反向代理;使用 endpoint,启用 WebSocket,读写超时 1 小时,关闭响应缓冲 |
pgext.conf | 扩展目录应用反向代理;使用 endpoint,启用连接复用与响应缓冲 |
pgweb.conf | PostgreSQL 中文社区站点;使用 endpoint,可另设 admin_static、media_root、files_root 三个静态目录 |
开发源码中的文件位于 roles/infra/templates/nginx/。这些模板都将 HTTP 重定向至 HTTPS,并保留 ACME 验证路径。beta.conf 的上游域名、缓存限制及 CA 文件路径是模板内配置;其中 CA 默认路径为 EL 的 /etc/pki/tls/certs/ca-bundle.crt,迁移到 Debian / Ubuntu 前应适配模板。pgweb.conf 服务的是社区网站,并非同名的 PostgreSQL 数据浏览器应用。
repo.conf 自带默认服务器与 127.0.0.1:9180/nginx 状态端点,部署时不要同时生成占用同一监听地址的 home.conf 默认服务器。使用此模板时应设置 nginx_exporter_scrape_uri: http://127.0.0.1:9180/nginx;若覆盖模板使用的 nginx_status_port,也要同步调整抓取地址。
缓存目录只会在配置中显式提供非空 cache_dir 时由角色创建。使用 beta.conf 时建议显式配置该字段,例如 /data/beta;设置前需确认数据盘有足够空间。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)