服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - Nginx中default_server指令问题详解

Nginx中default_server指令问题详解

2022-12-27 20:33颜淡慕潇 Nginx

nginx 的 default_server 指令可以定义默认的 server 出处理一些没有成功匹配 server_name 的请求,下面这篇文章主要给大家介绍了关于Nginx中default_server指令问题的相关资料,需要的朋友可以参考下

序言

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

1.基本介绍 

nginx 的 default_server 指令

可以定义默认的 server 出处理一些没有成功匹配 server_name 的请求

  • 1.显示定义
  • 2.指定Server_name
  • 3.隐式定义

这三种方式都可禁止 ip 直接访问

且 1,3同时可以禁止未绑定域名的访问(比如泛解析了主域名)。

如果没有显式定义,则会选取第一个定义的 server 作为 default_server。

2.显示定义一个 default server 

?
1
2
3
4
5
6
7
8
9
http {
    
    # 显示的定义一个 default server
    server {
        listen 80 default_server;
        server_name _;
        return 403; # 403 forbidden
    }
}

3.指定server_name 为 ip

?
1
2
3
4
5
6
7
8
9
10
http {
  
  # 直接指定 ip server_name
  server {
    listen 80;
    server_name 192.168.xxx.xxx;
    return 403; # 403 forbidden
  }
  
}

4. 隐式的 default server

在没有显式定义 default server 时,nginx 会将配置的第一个 server 作为 default server,即当请求没有匹配任何 server_name 时,此 server 会处理此请求。

所以,当直接使用 ip 访问时会进入第一个 server 处理,返回403 forbidden。

?
1
2
3
4
5
6
7
8
9
http {
    # 如果没有显式声明 default server 则第一个 server 会被隐式的设为 default server
    server {
        listen 80;
        server_name _; # _ 并不是重点 __ 也可以 ___也可以
        return 403; # 403 forbidden
    }
    
}

Tips: 

这里,server_name 设为 '_',其实也可以设置为其他。

'_' 只是作为一个和业务域名无关的请求回收服务,不要认为一定要设置为 '_',就好

如果线上的业务都是明确的业务域名访问,那泛解析造成的一些非业务域名或ip访问都会被这个 sever 回收处理。

5.风险问题

问题描述:

nginx 不配置 default_server ,会出现一些很诡异问题

有时候,代理机器没有配置流,居然可以访问正常,有时候,配置明明删除了,却也能访问

原因:

没有配置default_server

解决方案:

  • 在代理机做分发的时候一定要反复确认是否有映射过去
  • 设置一个 default_server

6.总结

nginx 批量载入配置 conf 时会按 ASCII (American Standard Code for Information Interchange)排序载入,

这就会以

  • server_a.conf
  • server_b.conf
  • server_c.conf

的顺序载入,如果没有生命 default_server 的话,那 server_a 会作为默认的 server 去处理 未绑定域名/ip 的请求。

建议显示指定 default server,因为在配置虚拟主机或多业务时,会存有多个 server 配置文件

如果使用隐式方式选取第一个被载入的 server 作为 default server 的话,还要时刻去确认谁是被第一个载入的...存在一定的风险...

补充:nginx 的default_server原理

Nginx中default_server指令问题详解

1.配置文件上面的server_name配置文件首先要遵循default_server的原则,需要得到验证才使用server_name配置的域名才能生效。

2.所以我们需要加default_server 加证书验证(证书随便,只是做检验用的)

3.这样做的目的就是防止恶意解析,如果不做这个策略。别的域名会解析到我们的IP。

到此这篇关于Nginx中default_server指令问题的文章就介绍到这了,更多相关Nginx default_server问题内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_36755535/article/details/128342546

延伸 · 阅读

精彩推荐
  • Nginxnginx配置文件使用环境变量的操作方法

    nginx配置文件使用环境变量的操作方法

    Nginx是一款开源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务,相较于Apache、lighttpd具有占有内存少,稳定性高等优势,所以深受...

    janbar12472021-08-06
  • Nginx通过Nginx反向代理实现IP访问分流的示例代码

    通过Nginx反向代理实现IP访问分流的示例代码

    本篇文章主要介绍了通过Nginx反向代理实现IP访问分流的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    garyond5592019-12-10
  • NginxNginx Gunicorn flask项目部署思路分析详解

    Nginx Gunicorn flask项目部署思路分析详解

    这篇文章主要为大家介绍了Nginx Gunicorn flask项目部署思路分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    老边11272022-12-12
  • NginxWindows下Nginx安装配置教程

    Windows下Nginx安装配置教程

    这篇文章主要为大家介绍了Windows下Nginx安装配置的详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    茹孟凯4342019-11-25
  • NginxNginx实现负载均衡的项目实践

    Nginx实现负载均衡的项目实践

    在我们实际生产中,一台服务器的处理能力、存储空间是有限的,这时候就需要负载均衡,本文详细的介绍了Nginx实现负载均衡的项目实践,具有一定的参...

    云计算-Security4562022-07-29
  • NginxNginx配置检测服务状态的实现方法

    Nginx配置检测服务状态的实现方法

    这篇文章主要介绍了Nginx配置检测服务状态的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    winters040602492020-01-08
  • Nginxnginx中配置pathinfo模式示例

    nginx中配置pathinfo模式示例

    这篇文章主要介绍了nginx中配置pathinfo模式示例,本文详细记录了摸索过程和成功的配置案例,需要的朋友可以参考下 ...

    nginx配置网3372019-10-23
  • NginxNginx 为什么是高效服务器,架构设计是怎样的?

    Nginx 为什么是高效服务器,架构设计是怎样的?

    Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务...

    服务器技术网3802020-10-29