Nginx 实现统一运维出口网关,本质是通过 proxy_pass 按路径(如 /metrics/、/logs/)将请求分发至 Prometheus、Loki 等后端服务,并透传 X-Real-IP 等关键头信息,配合 SSL、安全头与访问控制,实现轻量、可靠、可维护的单入口集中管理。

Linux 上用 Nginx 实现统一运维出口网关,本质是把多个后端服务(比如监控、日志、配置中心、CI/CD 等)通过一个固定域名或 IP + 端口对外暴露,由 Nginx 统一接收请求、按规则分发、透传关键信息。不依赖额外网关组件,轻量可靠。
安装与基础服务准备
先确保 Nginx 已正确安装并运行:
- Ubuntu/Debian:
sudo apt update && sudo apt install nginx && sudo systemctl enable --now nginx - CentOS/RHEL:
sudo yum install epel-release && sudo yum install nginx && sudo systemctl enable --now nginx - 验证:访问
http://localhost应看到 Nginx 欢迎页;执行sudo nginx -t确认配置语法无误
规划统一出口地址和后端映射关系
明确你要暴露的服务及其访问路径,例如:
-
ops.yourdomain.com/metrics→ Prometheus(端口 9090) -
ops.yourdomain.com/logs→ Loki(端口 3100) -
ops.yourdomain.com/config→ Nacos(端口 8848) -
ops.yourdomain.com/ci→ Jenkins(端口 8080)
建议统一使用子域名(如 ops.yourdomain.com)而非路径前缀,更清晰、更利于 SSL 和权限隔离。
编写独立的网关配置文件
避免直接修改 /etc/nginx/nginx.conf,推荐在 /etc/nginx/conf.d/ 下新建 ops-gateway.conf:
server {
listen 80;
server_name ops.yourdomain.com;
<pre class="brush:php;toolbar:false;"># 强制跳转 HTTPS(可选但推荐)
return 301 https://$host$request_uri;}
server { listen 443 ssl http2; server_name ops.yourdomain.com;
ssl_certificate /etc/ssl/certs/ops.fullchain.pem;
ssl_certificate_key /etc/ssl/private/ops.privkey.pem;
# 公共代理头设置(所有 location 复用)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
# Prometheus
location /metrics/ {
proxy_pass http://127.0.0.1:9090/;
proxy_redirect off;
}
# Loki
location /logs/ {
proxy_pass http://127.0.0.1:3100/;
proxy_redirect off;
}
# Nacos
location /config/ {
proxy_pass http://127.0.0.1:8848/;
proxy_redirect off;
}
# Jenkins(注意:Jenkins 默认不支持子路径,需在 Jenkins 中设置 JENKINS_HOME/jenkins.model.JenkinsLocationConfiguration.xml 或启动参数 --prefix=/ci)
location /ci/ {
proxy_pass http://127.0.0.1:8080/ci/;
proxy_redirect / /ci/;
}}
关键点说明:
- 结尾斜杠
/在proxy_pass和location中必须匹配,否则路径重写会出错 -
proxy_redirect用于修正后端返回的重定向响应头(如 Jenkins 登录跳转),避免暴露内部端口 - SSL 证书路径按实际调整;若暂无证书,可先用 Let’s Encrypt 的
certbot自动申请
安全与运维增强建议
作为运维出口,安全性与可观测性不能省略:
- 添加基础安全头:
add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "DENY"; - 限制敏感路径访问(如只允许内网 IP 访问
/config):allow 10.0.0.0/8; deny all; - 启用访问日志并单独归档:
access_log /var/log/nginx/ops-access.log main; - 定期 reload 配置:
sudo nginx -s reload(比 restart 更平滑)
配置生效后,所有运维服务即可通过 https://ops.yourdomain.com/xxx 统一访问,后端迁移或扩容只需改 Nginx 配置,客户端完全无感。


















