Nginx访问控制

Nginx访问控制

基于IP的访问控制 - http_access_module

基于用户的信任登录 - http_auth_basic_module

#语法1(允许那些IP可以访问)

Syntax:allow address | CIDR | unix: | allk;     

Default:——

Context:http,server,limit_except

#语法2(不允许那些IP访问)

Syntax:deny address | CIDR | unix: | all;

Default:——

Context:http,server,limit_except

演示

1.配置不允许指定ip访问,其他ip都可以访问

location ~ ^/admin.html {                #自动配置到admin.html
        root   /opt/app/code;            #不允许访问ip
        deny 192.168.96.135;           #允许访问的ip,all代表所有
        allow all;
        index  index.html index.htm;
    }

测试一下

使用192.168.96.135的主机访问,如限制外网ip,百度ip就能找到对应的ip

curl http://192.168.96.188/admin.html

Nginx访问控制?访问不到报403,Forbidden代表限制

使用其他ip访问,访问成功

Nginx访问控制?

2.配置允许指定ip访问,其他ip都不可以访问

location ~ ^/admin.html {
        root   /opt/app/code;
        allow 192.168.96.135/24;            #允许指定ip访问,可以加上段落
        deny all;                    #其他ip都不可以访问
        index  index.html index.htm;
    }

使用192.168.96.135主机访问,可以正常访问

curl http://192.168.96.188/admin.html

Nginx访问控制?

使用其他ip的主机就无法访问了

Nginx访问控制?

3.http_access_module局限性

Nginx访问控制?

这种情况下,nginx做限制只会是ip2,不会对ip1起作用,准确性不是很高

4.解决方法,使用http_x_forwarded_for变量模块

.与http_access_module的区别

Nginx访问控制?

代理方式

Nginx访问控制?

5.解决http_access_module局限性

Nginx访问控制?

访问网页密码登录,http_auth_hasic_module模块

#语法1

Syntax:auth_basic string | off;

Default:auth_basic off;

Context:http,server,location,limit_except

#语法2

Syntax:auth_basic_user_file file;

Default:——

Context:http,server,location,limit_except

可到官方网站查看使用方法

安装httpd-tools

yum -y install httpd-tools

生成密码文件

htpasswd -c ./auth_conf joy

配置.conf文件

vi /etc/nginx/conf.d/auth_mod.conf

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
 
    location / {
        root   /opt/app/code;
        index  index.html index.htm;
    }
	
#    location ~ ^/admin.html {
#        root   /opt/app/code;
#	deny 192.168.96.135;
#	allow all;
#        index  index.html index.htm;
#    }

    location ~ ^/admin.html {
        root   /opt/app/code;
	auth_basic "Auth access test! input your password";   # 访问前的提示信息
	auth_basic_user_file /etc/nginx/auth_conf;        # 密码文件位置
        index  index.html index.htm;
    }



    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache‘s document root
    # concurs with nginx‘s one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

重启nginx后,浏览器访问的效果

Nginx访问控制?

http_auth_basic_module局限性

一、用户信息依赖文件方式

二、操作管理机械,效率低下

Nginx访问控制?

相关推荐