nginx訪問控制

nginx的訪問控制主要分爲兩類:html

  • 基於IP的訪問控制 http_access_module
  • 基於用戶的信任登陸 http_auth_basic_module

1.基於IP的訪問控制http_access_module

語法

1.allow
Syntax:	allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
2.deny
Syntax:	deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
名詞解釋
address  指IP地址(192.168.1.1)
CIDR     指網段(192.168.1.0/24)
unix     主要是在linux和unix用到的socket訪問
all      全部人訪問
示例配置

原配置linux

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

1.禁止1.1.1.1(這裏指的是路由器上的IP地址)訪問,容許全部ip訪問nginx

location / { 
	root   /opt/app/code;
	deny   1.1.1.1;
	allow  all;
	index  index.html index.htm;
}

2.容許1.1.1.0/24網段ip訪問,禁止全部ip訪問web

location ~ /{
	root   /opt/app/code;
	allow 1.1.1.0/24;
	deny all;
	index  index.html index.htm;
}

allow 和 deny是配合使用的。app

侷限性

若是客戶端使用代理來訪問網站,這樣就不能保證禁止或容許某些ip訪問。socket

2.基於用戶的信任登陸 http_auth_basic_module

語法

1.auth_basic
Syntax:	auth_basic string | off;
Default: auth_basic off;
Context: http, server, location, limit_except
2.auth_basic_user_file
Syntax:	auth_basic_user_file file;
Default: —
Context: http, server, location, limit_except

示例配置

新建一個密碼文件,名稱爲auth_conf,用戶名爲xixi,回車後輸入密碼123456,確認密碼工具

安裝htpasswd

htpasswd是Apache密碼生成工具,Nginx支持auth_basic認證,所以我門能夠將生成的密碼用於Nginx中,輸入一行命令便可安裝:yum -y install httpd-tools ,參數以下:網站

-c 建立passwdfile.若是passwdfile 已經存在,那麼它會從新寫入並刪去原有內容.
-n 不更新passwordfile,直接顯示密碼
-m 使用MD5加密(默認)
-d 使用CRYPT加密(默認)
-p 使用普通文本格式的密碼
-s 使用SHA加密
-b 命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼,能夠看見明文,不須要交互
-D 刪除指定的用戶
$ htpasswd -c ./auth_conf xixi

修改配置文件加密

location / {
    root   html;
    auth_basic "Auth access test!input your passward!";
	auth_basic_user_file /etc/nginx/auth_conf;
    index  index.html index.htm;
}

重啓服務以後 訪問web就須要輸入密碼命令行

配置多個用戶 去掉-c

相關文章
相關標籤/搜索