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设置图片防盗链
常见的使用 Nginx 进行防盗链配置是利用了 referer, 也就是来源地址来判断, 只要不是白名单中的地址, 就禁止访问, referer 是比较有效的方式, 但是可以轻松绕过, 目的是为了防止页面被别人复制粘贴我们的文章, 图片等资源依然使用我们的连接, 占用带宽或流量造成费用. 白名单模式这种模式就是在白名单之外的所有域名都不能请求我们的图片等资源 配置示例: 黑名单模式未完待续…
2025-08-13
在Kubernetes集群中部署多个Nginx Ingress Controller
为什么要在集群中部署两个 Nginx Ingress Controller? 因为公司的入口目前是在一个 Ingress 上, 公网域名也解析到了这个 Ingress Controller 上面,不过有些内网的服务,我们并不想让它暴露在外,那么可以再部署一个内网使用的 Ingress Controller。 官方介绍地址:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/ 我准备将这两个 ingressclass 放在两个 namespace 里面。 先抽出 clusterrole 和 clusterrolebinding因为可以使用一个 clusterrole,没必要每个 ingress controller 都创建 clusterrole 修改 namespace所有 namespace 都需要修改成新的 修改 ingressclass 修改启动参数 简单制作方法首先下载文件:https://github.com/kubernetes/ingress-nginx/blob/ma...
2025-01-09
阿里云ACK中Nginx ingress使用CLB上的Https证书
背景: 我们在客户那里部署了一套服务, 服务运行在客户提供的 ACK 集群, 我们删除了客户 ACK 自带的 nginx ingress, 通过自建的方式部署了两套 ingress, 一套绑定了公网 四层 CLB, 一套绑定了内网 四层 CLB, 也就是说是 CLB 转发到 ingress, 然后通过 ingress 转发到其他服务. 现在需要配置 Https 证书, 客户不同意我们配置证书到 ingress, 客户将证书放在了 CLB 上, 给了一个证书 ID 查询阿里云文档阿里云的文档还是很详细, 通过 google 查询到文档地址: 通过Annotation配置传统型负载均衡CLB 具体可以查看这里 HTTPS 请求会在 CLB 层解密,然后以 HTTP 请求的形式发送给后端的 Pod。 这个在腾讯云的四层负载均衡里叫 TCP SSL 监听器。 配置 LoadBalancer 类型的 Service因为我们的 CLB 是只给 ingress 使用, 所以修改 ingress 的 Service 配置 yaml: CLB 后端端口配置问题照着上面步骤配置了以后, H...
2026-07-22
在 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之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...
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:

