You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Nginx Prometheus exporter启动报connection refused错误

故障原因
  • 本地域名解析与Nginx监听规则不匹配:服务器/etc/hosts文件中通常会将自身域名映射到127.0.1.1这类回环地址,但你的Nginx仅监听了公网IP的443端口,未监听回环地址的443端口,本地发起的请求直接打到回环地址的443端口时被拒绝。而你手动访问是从外部网络发起,域名解析到公网IP,因此可以正常打开页面。
  • systemd启动时机过早:你当前配置的After=network.target仅代表系统网络栈初始化完成,此时可能网卡还未完全拿到IP、本地解析规则还未加载,导致服务启动时解析异常。
  • 安全模块限制:系统内置的AppArmor等安全模块可能限制了nginx_exporter用户对本地443端口的访问权限,导致连接被拒。
解决方案

优先推荐第一种方案,改造成本最低且稳定性最高:

  • 方案1:修改采集地址为本地非SSL路径
    在Nginx配置中放开127.0.0.1对status页的访问权限,直接采集本地回环地址的status页,避免解析和SSL校验问题。修改systemd配置中的ExecStart参数如下:
    ExecStart=/usr/local/bin/nginx-prometheus-exporter \
        -web.listen-address=server_IP:9113 \
        -nginx.scrape-uri http://127.0.0.1/nginx-status
    
    修改完成后执行命令重启服务即可:
    systemctl daemon-reload && systemctl restart nginx_prometheus_exporter
  • 方案2:修复解析与监听规则
    要么将/etc/hosts中domain.tld对应的解析地址修改为服务器的公网IP,要么在Nginx的443端口监听配置中新增127.0.0.1:443、127.0.1.1:443的监听规则,重启Nginx后再重启exporter服务。
  • 方案3:调整systemd启动依赖
    如果是启动时机异常导致的问题,修改Unit段的启动依赖,确保网络完全就绪后再启动服务:
    [Unit]
    Description=Nginx Prometheus Exporter
    After=network-online.target
    Wants=network-online.target
    
    重载配置重启服务后验证是否恢复。
  • 方案4:排查安全模块权限
    临时关闭AppArmor测试是否恢复:aa-teardown,如果确认是安全模块限制,为nginx_exporter用户放开本地443端口的访问权限即可。

内容的提问来源于stack exchange,提问作者Roberto Jobet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:24:03