nginx禁止直接ip、未配置域名访问配置

问题背景

最近偶然对线上域名配置的nginx IP进行直接访问后,发现http居然是可以通的,而https直接IP访问浏览器会报证书不安全的提示,点击详细查看发现是固定返回了nginx配置的某一个api开头的https证书给浏览器,浏览器校验证书域名与访问用的IP不一致于是报错中止了TLS握手流程。
上网一查,才发现当通过直接IP或者未绑定域名访问nginx时(其实直接IP也可以视为域名就是IP的一种情况),如果没有匹配的server_name, nginx会采用加载的第一个server_name配置处理请求。这至少会导致三个问题:

禁止HTTP方式非配置域名访问

禁止非预期域名HTTP访问比较简单,在ngnix conf/site-enabled 配置文件(如default.conf)中添加一下配置即可:

server
{
    listen 80 default_server;
    server_name _;
    return 444;
}

其中defalut_server显式指出本server为80端口的默认server, 因为是默认server,所以server_name其实可以填任意值,444为nginx自定义code,表示断开连接不返回任何响应。

禁止HTTPS非配置域名访问

在nginx1.19.4 及以上版本,禁止非预期域名直接访问配置也很简单,只需要添加443端口监听并配置ssl_reject_handshake on即可,具体可参见NGINX 配置避免 IP 访问时证书暴露域名

但是对于低版本nginx,需要配置对应443端口规则,还需要配置一个自签名IP证书(不配置证书的情况下nginx -t就会直接报配置不正确),配置如下:

server
{
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_certificate /usr/local/nginx/conf/ssl/ip.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/ip.key;
return 444;
}

Original: https://www.cnblogs.com/AcAc-t/p/nginx_forbid_access_by_ip_or_unexpected_host.html
Author: 及时
Title: nginx禁止直接ip、未配置域名访问配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578237/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CNN卷积神经网络的构建

    1.卷积神经网络由输入层,卷积层,激活函数,池化层,全连接层组成. input(输入层)–conv(卷积层)–relu(激活函数)–pool(池…

    Linux 2023年6月6日
    082
  • 浅谈kali : aircrack-ng套件

    aircrack-ng 套件包含有: Name Description aircrack-ng 破解WEP以及WPA(字典攻击)密钥 airdecap-ng airmon-ng 将…

    Linux 2023年6月14日
    074
  • 国庆专属头像一键生成搭建教程,附源码!

    国庆节马上就要来啦! 没有一个像样的微信头像怎么行。 为此小编为大家带来了一款国庆节国旗头像生成源码,有服务器、域名的朋友可以自行下载上传至服务器之后提供给大家使用。 没有服务器、…

    Linux 2023年6月7日
    0108
  • 分布式事务一站式解决方案与实现

    1 本地事务 1.1 事务的概述 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。从而确保了数据的准确与安全。 1.2 事务的四大特性 原子性(Ato…

    Linux 2023年6月13日
    0135
  • 在python中判断字符串是str还是unicode

    if isinstance(iniStr , unicode ):print “unicode”elif isinstance(iniStr, str):p…

    Linux 2023年6月8日
    0119
  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    Linux 2023年6月7日
    0111
  • Canal实时解析mysql binlog数据实战

    一、说明 通过canal实时监听mysql binlog日志文件的变化,并将数据解析出来 二、环境准备 1、创建maven项目并修改pom.xml配置文件 com.alibaba….

    Linux 2023年6月13日
    075
  • conda 和 pip 的具体区别

    pip install 安装包时不会自动安装所需的其他依赖包,只是在缺少其他依赖包时作错误提示,这时需要手动安装其他依赖包 pip 不会将python看成包,不能对环境中的pyth…

    Linux 2023年6月7日
    086
  • 005.系统管理监测命令

    作者:木二 出处:http://www.cnblogs.com/itzgr/ 关于作者:云计算、虚拟化,Linux,多多交流! 本文版权归作者所有,欢迎转载,但未经作者同意必须保留…

    Linux 2023年6月7日
    097
  • WOE编码与IV值

    参考:WOE与IV值浅谈机器学习-变量筛选之IV值和WOE 0. Introduction WOE (weight of evidence): 证据权重IV (informatio…

    Linux 2023年6月13日
    0153
  • 搭建Nginx正向代理服务

    需求背景: 前段时间公司因为业务需求需要部署一个正向代理,需要内网服务通过正向代理访问到外网移动端厂商域名通道等效果,之前一直用nginx做四层或者七层的反向代理,正向代理还是第一…

    Linux 2023年6月8日
    099
  • 【Example】C++ 回调函数及 std::function 与 std::bind

    回调函数是做为参数传递的一种函数,在早期C样式编程当中,回调函数必须依赖函数指针来实现。 而后的C++语言当中,又引入了 std::function 与 std::bind 来配合…

    Linux 2023年6月13日
    086
  • Jquery如何使用animation动画效果改变背景色

    一、问题引入 1. jquery的animate动画虽然强大,但是无法使用其进行背景色(background-color)的动画效果变化,因为animate动画效果只能动态改变数值…

    Linux 2023年6月14日
    0208
  • python学习(解析python官网会议安排)

    对html的解析是网页抓取的基础,分析抓取的结果找到自己想要的内容或标签以达到抓取的目的。 HTMLParser是python用来解析html的模块。它可以分析出html里面的标签…

    Linux 2023年6月14日
    0105
  • 操作系统实现-进入内核

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们正式进入内核,编写相关的内核代码,也就是kernel代码 数据类…

    Linux 2023年6月13日
    0100
  • Java的jinfo命令使用详解

    jinfo命令简介 jinfo(Java Virtual Machine Configuration Information)是JDK提供的一个可以实时查看Java虚拟机各种配置参…

    Linux 2023年5月27日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球