Nginx深刻了解-基礎(四)

Nginx的訪問控制。有兩種方式能夠來進行webserver的訪問控制:一種是基於IP的訪問控制-http_access_module;另外一種是基於用戶的信任登陸-http_auth_basic_module.
  • http_access_module
Syntax:allow address|CIDR|unix:|all;// ip地址|網段|socket方式|容許全部
Default:--
Context:http,server,location,limit_except

相對應的deny方式html

Syntax:deny address|CIDR|unix:|all;
Default:--
Context:http,server,location,limit_except
server {
    ...
    location / {
        ...
        deny 127.0.0.1;
        allow all;
    }
    location ~ ^/admin {
        ...
        allow 127.0.0.1;
        deny all;
    }
}

http_access_module是有侷限性的,當客戶端使用cdn代理時,nginx讀取客戶端的ip是經過remote_addr來識別的,識別到的ip此時是cdn代理的ip,而不是客戶端真實的ip.nginx

方式一:可使用http_x_forwarded_for解決。web

http_x_forwarded_for

方式二:結合geo模塊
方式三:經過http自定義變量傳遞socket

  • http_auth_basic_module
Syntax:auth_basic string|off;
Default:auth_basic off;
Context:http,server,location,limit_except

官方文檔:http://nginx.org/en/docs/http...spa

Syntax:auth_basic_user_file file;// 使用文件密碼信息
Default:--
Context:http,server,location,limit_except

按照官網可使用htpasswd方式生成對應的文件:代理

[dc2-user@10-254-0-193 nginx]$ sudo htpasswd -c ./auth_conf mantis

[dc2-user@10-254-0-193 nginx]$ more ./auth_conf
mantis:$apr1$dnrF/7bE$gaMkEYvWB2KYmaG0cQcoS0

配置unix

server {
    ...
    location ~ ^/admin {
        ...
        auth_basic "Auth access deny!";
        auth_basic_user_file /etc/nginx/auth_conf;
        ...
    }
}

侷限性:code

一,用戶信息依賴文件
二,操做管理機械,效率低下cdn

解決方式:server

一,使用Lua實現驗證二,Nginx和LDAP打通,利用nginx-auth-ldap模塊

相關文章
相關標籤/搜索