网关-Nginx禁止通过IP访问,允许域名访问

简介: Nginx开启域名访问模式,屏蔽通过IP访问

nginx

1. 背景

近期因为信息安全方面的要求,安全部门提出我们的对公服务,要屏蔽来自 IP 地址的访问。我们接到这个需求,分析出要在反向代理服务器上设置禁止通过 IP 地址来访问服务,只允许通过域名的访问。

2. 现状

因为我们的对公服务域名有多个,而且域名,因为当初建设过程中,没考虑冗余,都配置成同城同机房一组外网服务器进行转发,所以这些域名都对应同一个公网 IP

3. 问题分析

提前补充一点网络的小知识,通过IP访问 与 通过 域名访问的区别就在于 HTTP 请求头信息中的 Host 值。我们在反向代理软件中,只要校验 Host 属性与我们自身域名不相同,则直接给我们的错误代码。

  • 域名访问

通过域名访问

  • IP访问

通过IP访问

3.1. 多域名

我们域名比较多,但是 NginxLua 语法不支持多重判断。所这里这里可以使用多个条件语句。

3.2. 多监听

此处没法绕过,只能挨个 server 配置,如果有更好的办法,欢迎请在留言处指明。

4. Nginx版本

此次演示是基于 1.21.6 的版本来操作。


-rwxrwxr-x 1 kejie kejie 6133152 Jun 10 20:28 nginx
[kejie@portal-apptest8 sbin]$ ./nginx -v
nginx version: nginx/1.21.6

5. 实现方案

由于 Nginx 语法特殊性,写法也有不同,下来主要就两种方式来说明实现方案。

5.1. 传统方式

Nginx 通过 $host 来获取 HTTP 中的 Host 属性,对 $host 内容进行判定即可。


http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name _;

        set $flag 0;
        if ($host ~* ^cia* ) {
             set $flag "1${flag}";
         }
         if ($host ~* ^mo* ) {
             set $flag "1${flag}";
         }
         if ($flag !~* ^1* ) {
             return 403;
         }
    }
}

这种方式,就是堆叠 if 语句,客观性和拓展性不够好。适用于临时应急方案。

5.2. 正则方式

既然传统方式不够友好,那需要考虑其他实现方案。通过观察,我们域名都有一定的特点,如后缀都是 cia.com.cn 。所以这里考虑使用正则表达式。

只要是 server_name 中的域名都是以 cia.com.cn 结尾的都是放行,最终配置如下:


http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name ~^(.+).cia.com.cn$;;
    }
}
目录
相关文章
|
存储 应用服务中间件 nginx
在使用Nginx之后,如何在web应用中获取用户IP以及相关原理
但总的来说,通过理解网络通信的基础知识,了解http协议以及nginx的工作方式,我们已经能在大多数情况下准确地获取用户的真实IP地址了,在调试问题或者记录日志时会起到很大的帮助。
828 37
Porfinet从转Ethernet/IP从总线协议转换网关
通过使用协议转换网关,可以有效实现PROFINET与EtherNet/IP之间的通信互操作,提升工业自动化系统的灵活性和兼容性。关键在于选择合适的网关设备,正确配置网络和协议参数,确保数据的准确传输和实时通信。通过以上步骤,可以顺利实现从PROFINET到EtherNet/IP的协议转换,满足复杂工业环境中的多协议集成需求。
545 31
|
安全 网络协议 网络安全
只有IP地址没有域名,如何实现HTTPS访问?
在仅有IP地址而无域名的情况下,实现HTTPS访问并非不可能。主要挑战包括证书颁发机构(CA)对IP地址的支持有限及浏览器兼容性问题。解决方案有:1) 搭建私有CA为内部IP地址颁发证书;2) 使用支持IP地址的公共CA服务。选择合适的方案需根据需求权衡。具体步骤包括选择证书类型、生成CSR文件、提交并完成验证、安装SSL证书和配置强制HTTPS访问。确保IP地址稳定,并定期维护安全性。 **申请优惠**:访问JoySSL官网并填写注册码“230907”可优惠申请IP地址证书。
2770 5
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
2238 6
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
1495 3
|
域名解析 网络协议 安全
反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性
在网络世界中,反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性。它在邮件服务器验证、网络安全等领域至关重要,帮助识别恶意行为,增强网络安全性。尽管存在配置错误等挑战,但正确管理下,反向DNS解析能显著提升网络环境的安全性和可靠性。
901 3
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
364 4
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
1545 3
|
运维 监控 安全
在实际应用中,如何选择基于不同域名还是不同 IP 进行代理多服务的配置?
综上所述,在实际应用中选择基于不同域名还是不同 IP 进行代理多服务的配置,需要根据具体的业务需求、可扩展性、性能、安全性以及维护和管理成本等多方面因素进行综合考虑,权衡利弊,选择最适合自己系统架构和运营需求的配置方式。
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。