IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx——nginx的访问控制详解(一) -> 正文阅读

[系统运维]Nginx——nginx的访问控制详解(一)

一、实现访问控制的基本方式

模块作用
http_access_module基于IP的访问控制(允许或者不允许某些ip访问)
http_auth_basic_module基于用户的信任登录(提供登录认证的方式控制访问范围)

二、基于IP的访问控制语法(即http_access_module模块语法)

1、允许访问的控制语法

  • Syntax:allow address | CIDR | unix: | all ;allow address表示允许哪一个ip访问,allow CIDR 表示允许哪个网段可以访问,allow unix: 表示在linux上用到的socket的方式访问,allow all表示允许所有的访问
  • Default:—— 表示默认没有配置
  • Context:http,server,location,limit_except 表示需要在http块、或server块、或location块、limit_except块中进行配置

2、不允许访问的控制语法

  • Syntax:deny address | CIDR | unix: | all ;allow address表示不允许哪一个ip访问,allow CIDR 表示不允许哪个网段可以访问,allow unix: 表示在linux上用到的socket的方式访问,allow all表示不允许所有的访问
  • Default:—— 表示默认没有配置
  • Context:http,server,location,limit_except 表示需要在http块、或server块、或location块、limit_except块中进行配置

三、http_access_module模块中的配置演示

1、配置nginx访问html页面的路径

  • 创建title.html页面,上传到/opt/app/html目录下

    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>titleone</title>
    	</head>
    	<body style="background-color:red;">
    		<h1>标题</h1>
    	</body>
    </html>
    
  • 编辑nginx.conf配置文件,在http块的server块中配置访问/opt/app/html目录下的所有html页面,如下内容

    location / {
        root /opt/app/html;
        index index.html index.htm;
    }
    

    在这里插入图片描述

  • 启动nginx服务

    [root@localhost nginx]# systemctl start nginx.service
    [root@localhost nginx]# 
    

    在这里插入图片描述

  • 检查配置修改的配置文件是否正确,返回successful表示配置文件修改无错。

    [root@localhost nginx]# nginx -t -c /etc/nginx/nginx.conf
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@localhost nginx]# 
    

    在这里插入图片描述

  • 重新加载配置文件

    [root@localhost /]# systemctl reload nginx
    [root@localhost /]# 
    

    在这里插入图片描述

  • 虚拟机中的浏览器访问如下图

    在这里插入图片描述

2、配置nginx不允许本机ip访问html页面

  • 编辑nginx.conf配置文件,在http块的server块中配置不允许本机ip访问并配置允许所有访问,添加如下内容

    #配置nginx不允许本机ip访问并允许所有访问
    location ~ ^/title.html {#配置跟目录下的访问路径
             root /opt/app/html;
             deny 192.168.3.10;
             allow all;
             index index.html index.htm;
    }
    

    在这里插入图片描述

  • 检查配置修改的配置文件是否正确,返回successful表示配置文件修改无错。

    [root@localhost nginx]# nginx -t -c /etc/nginx/nginx.conf
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@localhost nginx]# 
    

    在这里插入图片描述

  • 重新加载配置文件

    [root@localhost /]# systemctl reload nginx
    [root@localhost /]# 
    

    在这里插入图片描述

  • 在浏览器中使用本机ip访问,查看是否可以访问,如下图说明本机ip不可访问,配置生效。

    在这里插入图片描述

3、配置nginx允许本机ip访问html页面

  • 编辑nginx.conf配置文件,在http块的server块中配置允许本机ip访问并配置不允许所有访问,添加如下内容

    #配置nginx允许本机ip访问并不允许所有访问
    location ~ ^/title.html {#配置跟目录下的访问路径
             root /opt/app/html;
             allow 192.168.3.10;
             deny all;
             index index.html index.htm;
    }
    

    在这里插入图片描述

  • 检查配置修改的配置文件是否正确,返回successful表示配置文件修改无错。

    [root@localhost nginx]# nginx -t -c /etc/nginx/nginx.conf
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@localhost nginx]# 
    

    在这里插入图片描述

  • 重新加载配置文件

    [root@localhost /]# systemctl reload nginx
    [root@localhost /]# 
    

    在这里插入图片描述

  • 在浏览器中使用本机ip访问,查看是否可以访问,如下图说明本机ip可访问,配置生效。

    在这里插入图片描述

四、http_access_module的局限性(使用的是remote_addr变量)

在这里插入图片描述

  • 如上图,IP1是客户端,IP2是中间层代理,IP3是服务端;
  • 如上图,如果访问不是客户端与服务端直接连接,而是通过一层代理。【包括nginx代理、7lay LSB(7层的负载均衡)、CDN代理】,nginx是通过remote_addr = IP2这个变量来识别客户端的ip;
  • 只能通过$remote_addr控制信任;
  • 所以如果对客户端ip1做限制的话,就不会起作用而是对中间层的代理做的限制;

五、http_access_module的局限性解决方式(使用http_x_forwarded_for变量)

1、http_x_forwarded_for的理解

  • http_x_forwarded_for是nginx中http头变量中常用的变量

2、nginx的remote_addr控制访问和HTTP头信息控制访问http_x_forwarded_for区别

在这里插入图片描述

  • 如上图:nginx的控制访问是通过remote_addr = IP2这个变量来识别客户端的ip,即识别的代理服务的ip
  • 如上图:HTTP头信息控制访问x_forwarded_for = IP1,IP2这个变量来识别客户端的ip,即识别的是客户端的ip1和代理服务的IP2;

3、如何解决http_access_module的局限性

  • 采用别的HTTP头信息控制访问,如http_x_forwarded_for;
  • 结合geo模块;
  • 通过HTTP自定义变量传递;
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:54:04  更:2021-07-13 17:54:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 0:37:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码