nginx 怎么避免options请求(详解nginx 的 default_server 定义及匹配规则)
nginx 怎么避免options请求
详解nginx 的 default_server 定义及匹配规则nginx 的 default_server 指令可以定义默认的 server 去处理一些没有匹配到 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 default_server。
在了解到如上规则后,我们可以捕获未做绑定的域名访问或直接IP访问,做重定向到403页面等处理。
1、nginx 隐式的 default server
http { # 如果没有显式声明 default server 则第一个 server 会被隐式的设为 default server server { listen 80; server_name _; # _ 并不是重点 __ 也可以 ___也可以 return 403; # 403 forbidden } server { listen 80; server_name www.a.com; ... } server { listen 80; server_name www.b.com; ... } }
很多人复制粘贴广泛传播 server_name 要设为 '_',其实一毛钱的关系也没有。'_' 只是作为一个和业务域名无关的请求回收服务而已,如果我们线上的业务都是明确的业务域名访问,那泛解析造成的一些非业务域名或ip访问都会被这个 sever 回收处理。
在没有显式定义 default server 时,nginx 会将配置的第一个 server 作为 default server,即当请求没有匹配任何 server_name 时,此 server 会处理此请求。所以,当我们直接使用 ip 访问时会被交给此处定义的第一个 server 处理,403 forbidden。
2、显示的定义一个 default server
http { server { listen 80; server_name www.a.com; ... } server { listen 80; server_name www.b.com; ... } # 显示的定义一个 default server server { listen 80 default_server; server_name _; return 403; # 403 forbidden } }
建议显示指定 default server,因为我们在配置虚拟主机或多业务时,会存有多个 server 配置文件,如果使用隐式方式选取第一个被载入的 server 作为 default server 的话,我们还要时刻去确认谁是被第一个载入的...制造风险...
3、直接指定server_name 为 ip(只能禁止ip访问)
http { server { listen 80; server_name www.a.com; ... } server { listen 80; server_name www.b.com; ... } # 直接指定 ip server_name server { listen 80; server_name xxx.xxx.xxx.xxx; return 403; # 403 forbidden } }
以上三种方式都可禁止 ip 直接访问,且 1,2 同时可以禁止未绑定域名的访问(比如你泛解析了主域名)。
小记:nginx 批量载入配置 conf 时会按 ascii 排序载入,这就会以 server_a.conf server_b.conf server_c.conf 的顺序载入,如果没有生命 default_server 的话,那 server_a 会作为默认的 server 去处理 未绑定域名/ip 的请求。
到此这篇关于详解nginx 的 default_server 定义及匹配规则的文章就介绍到这了,更多相关nginx default_server 匹配规则内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- nginx配置ip端口访问(Nginx配置80端口访问8080及项目名地址方法解析)
- nginx日志请求状态(Nginx设置日志打印post请求参数的方法)
- 如何采集nginx的日志(Filebeat 采集 Nginx 日志的方法)
- docker如何访问nginx(基于docker启动nginxssl配置)
- docker安装nginx如何配置(docker部署nginx并且挂载文件夹和文件操作)
- 修改宝塔nginx端口(解决宝塔面板nginx/apache防火墙后无法启动)
- nginx 处理服务器错误(nginx服务器异常502 bad gateway原因排查)
- nginx 进程关闭(详解nginx进程锁的实现)
- nginx 反向代理详细配置(nginx反向代理配置去除前缀案例教程)
- linux nginx部署前端项目(nginx部署多前端项目的几种方法)
- nginx配置静态资源访问(nginx 多个location转发任意请求或访问静态资源文件的实现)
- nginx给需要转发的链接添加参数(Nginx 根据URL带的参数转发的实现)
- nginx为什么要配置https(Nginx配置Https安全认证的实现)
- nginx结构图解(详解Nginx 工作原理)
- nginx 可以部署java吗(Java-利用Nginx负载均衡实现Web服务器)
- nginx学习需要哪些知识(一篇文章搞懂Nginx是什么,能干什么)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
- 吐槽完《弧光大作战》之后,我们和设计师聊了聊魔兽首款手游的立项初衷和未来(吐槽完弧光大作战之后)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
热门推荐
- asp.net去除字符串中html标签
- 在html代码如何添加php代码(php生成HTML文件的类方法)
- css导航栏特效(CSS导航栏及弹窗示例代码)
- 运维堡垒机怎么搭建(堡塔云控平台添加服务器受控端图文教程)
- 如何查看python是否安装selenium(selenium+python截图不成功的解决方法)
- linux如何使用gdb调试(Linux下如何使用gdb调试core文件)
- vue组件keep-alive的原理是什么(如何理解Vue简单状态管理之store模式)
- mysql开启审计日志会导致性能下降(MySQL 一则慢日志监控误报的问题分析与解决)
- python用指针合并两个有序数组(Python3实现计算两个数组的交集算法示例)
- 美国云服务器稳定吗(选择美国云服务器需要关注什么?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9