当Nginx作为web服务的时候也会有安全功能的模块,可以通过修改配置文件的方式来设置允许和拒绝的IP来访问。有些IP被设置拒绝访问后,访问的时候会出现403,也就是拒绝访问。不过由于IP的数量庞大,很多时候都不会指定详细的IP地址,应该会使用网段的方式。比如192.168.0.*,这样的方式进行配置 。

当然了,基于IP的访问控制是Nginx的其中一个安全模块,还会有其他的访问控制形式。但下面就配置一下简单的基于IP的访问控制

首先在/root/access目录下新建一个HTML文件,作为访问页面,名为admin.html

[root@localhost code]# vim /root/access/admin.html
<html>
<head>
	<meta charset="utf-8">
	<title>vincen</title>
</head>
<h1>本机允许访问</h1>
<h1>hello</h1>
</html>

其次修改Nginx的配置文件,修改访问路径(上面创建HTML文件的路径)以及增加一个location的内容,设置访问路径和允许除了61.141.96.68这个以外的所有IP都能访问(61.141.96.68这是我目前物理机所使用的IP)

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf

root   /root/access;  #页面访问的路径

location ~ ^/admin.html {
        root /root/access;     #页面访问的路径
        index index.html index.htm;   #访问html文件或者htm
        deny 61.141.96.68;           #拒绝IP为61.141.96.68访问
        allow all;                   #允许所有IP访问(除了61.141.96.68)
    }

  修改好Nginx的配置文件后,先检查一下配置文件的语法是否正确,执行命令后出现下面两行信息则说明是OK的

[root@localhost ~]# nginx -tc /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
#弹出以上两个提示则说明语法正确

检查语法没问题后就进行重新加载Nginx服务,把刚刚修改过的配置文件内容加进服务里

[root@localhost ~]# nginx -s reload -c /etc/nginx/nginx.conf

最后在本机浏览器上访问这个虚拟机(IP),也就是访问Nginx。因为配置文件设置拒绝本机IP访问,其他IP则可以访问。

(403 forbidden表示没有权限访问)。(如果有VPN或者代理的,则可以使用其他IP进行测试)

nginx 根据 uri nginx 根据目的IP_Nginx

遇到拒绝访问的时候,再回去修改Nginx的配置文件

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf

  修改刚刚添加的location的内容,允许本机IP访问,其他IP不能访问

location ~^/admin.html{
        root /root/access;
        index index.html index.htm;
        deny all;                #拒绝所有IP访问
        allow 61.141.96.68;      #允许IP为61.141.96.68访问
    }

检查Nginx的语法,确认没错误后进行重载服务

[root@localhost ~]# nginx -tc /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 -s reload -c /etc/nginx/nginx.conf

在浏览器访问虚拟机,这时候本机是访问成功的。(如果有VPN或者代理的,则可以使用其他IP进行测试)

nginx 根据 uri nginx 根据目的IP_IP_02