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

如何限制直接通过服务器IP访问Prometheus 仅允许指定域名访问

解决方案

你遇到的问题根源是Nginx没有配置默认兜底的服务块处理不匹配域名的请求,当你用IP访问时,Nginx会默认命中端口匹配的第一个服务块,也就是你配置的Prometheus反代块,所以可以正常访问。你只需要在现有Nginx配置基础上添加两个默认server块即可,不需要修改Prometheus配置,你的Prometheus已经配置为仅监听本地127.0.0.1端口,不会直接对公网暴露。


1. 添加80端口默认兜底块

在你现有的Nginx配置最前面添加如下配置,所有80端口非域名访问的请求直接返回403禁止访问:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 403;
}

2. 添加443端口默认兜底块

同样在配置最前面添加443端口的兜底配置,处理HTTPS IP访问的请求,直接返回Nginx特有的444状态码(直接断开连接,不返回任何内容):

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name _;
    # 复用现有证书即可,避免Nginx启动报错
    ssl_certificate         /etc/ssl/certs/ssl-cert-cf.pem;
    ssl_certificate_key     /etc/ssl/private/ssl-key-cf.pem;
    return 444;
}

3. 配置生效

修改完成后执行命令校验配置正确性,无误后重载Nginx即可:

nginx -t
systemctl reload nginx

配置生效后,直接用IP访问会直接被拒绝,只有使用指定域名访问才能正常打开Prometheus页面。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 01:03:00