Nginx Status监控
发表于|更新于|基础运维
1 | server { |
这个时候请求,返回
1 | curl localhost:8080/nginx_status |
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2026-07-14
Nginx使用module_vts模块来做监控
最近我们想要用 Prometheus 来监控 Nginx 的状态,所以看了一下有个 module 可以支持。项目地址在:https://github.com/vozlt/nginx-module-vts.git 重新编译 Nginx首先执行 nginx -V 查看编译参数,记录一下, 比如 然后需要 Nginx 源码包和当前安装的 Nginx 版本相同 下载 nginx_module_vts 进入 nginx 源码目录 开始编译,编译时增加一条参数 结合上面记录的编译参数,完整的编译参数是: 开始编译 然后将编译好的二进制文件替换现有的 nginx 注:nginx-module-vts 模块从 0.1.17+ 版本之后原生支持 prometheus 数据格式,可跳过 nginx-vts-exporter 的安装。 之前没安装过 nginx 的可以直接 make && make install 开启监控 监控接口为:
2026-07-14
Nginx之server_name匹配和listen匹配
nginx 可以通过 listen 的 ip 和端口来匹配请求应该由哪个配置文件来处理,也可以通过 server_name 来匹配,抽空理了理这个匹配的规则和优先级,参考文档: 基于域名的虚拟主机默认是先匹配 listen 的 ip 和端口,匹配到了再检查 server_name,如果没有匹配的 server_name,则由第一个来处理,除非添加 default_server 测试一下: 在这个配置中,nginx 仅仅检查请求的“Host”头以决定该请求应由哪个虚拟主机来处理。如果 Host 头没有匹配任意一个虚拟主机,或者请求中根本没有包含 Host 头,那 nginx 会将请求分发到定义在此端口上的默认虚拟主机。在以上配置中,第一个被列出的虚拟主机即 nginx 的默认虚拟主机——这是 nginx 的默认行为。而且,可以显式地设置某个主机为默认虚拟主机,即在 “listen” 指令中设置 “default_server” 参数: 如果同样的 listen 配置了两个 default_server 则会报错 nginx: [emerg] a duplicate defa...
2026-02-21
ingress-nginx 去除指定context path
比如我想去掉 url 中的 /a 方法一、使用 Nginx 配置片段 但是这种方式需要修改 ingress nginx 开启支持 nginx 配置的功能,详情见 ingress-nginx 使用自定义的nginx配置 方法二、使用 ingress nginx 原生配置需要去除 context path 的路径,创建专门的 ingress,比如:

2026-07-25
在 Nginx 中禁止 IP 直连与域名暴露
说明比如漏洞扫描工具会扫描出这种漏洞(直接访问 https://1.1.1.1 ):SSL Certificate Is About To ExpireSSL Certificate Name Hostname Mismatch只是 Nginx 开放到公网,也并不会直接通过 IP 地址来访问,为了消除这个漏洞影响。 不返回数据可以修改 nginx 的默认站点配置,直接返回 444(444 状态码是 Nginx 特有的,即直接关闭链接) 这是一个最简单的配置,配置完成后,浏览器访问效果: 虽然不返回数据了,但是还是会泄露证书信息。 禁止发送证书加上配置:ssl_reject_handshake on IP 地址直接访问的效果,不但被禁止打开。而且浏览器里看不到证书信息。 访问正常的域名正常:
2026-07-14
Nginx Ingress 暴露没有定义Host的ingress的Metrics数据
指定默认的 ingress 后端名字有点绕口,假如说之前有个服务是通过 ip:port 来访问 nginx(就是 default server),然后转发到后端服务的,那么转换成 ingress 后,不能指定 host,不然会匹配不到规则。ingress 就不能配置 host,创建出来的 ingress 资源就是这样的: 创建出来的 ingress 资源显示: metrics 监控指标问题因为上面我们创建了一个 ingress,但是没有指定 host,在 ingress-nginx 中,没有 host 的 ingress 的 metrics 指标是不收集的,代码在此:https://github.com/kubernetes/ingress-nginx/blob/d82585917c845e598a2cd5d2c4291ce891b5e5b4/internal/ingress/metric/collectors/socket.go#L233-L235 GitHub 上有很多对应的 issues,比如:https://github.com/kubernetes/ingre...
2026-07-14
前后端跨域问题
啥是跨域跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。 跨源 HTTP 请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。 出于安全性,浏览器限制脚本内发起的跨源 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。 为什么会跨域说到跨域不得不谈的就是浏览器的同源策略,跨域也是因为浏览器这个机制引起的,这个机...
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:

