nginx
的訪問控制主要分爲兩類:html
http_access_module
http_auth_basic_module
http_access_module
Syntax: allow address | CIDR | unix: | all; Default: — Context: http, server, location, limit_except
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
http_auth_basic_module
Syntax: auth_basic string | off; Default: auth_basic off; Context: http, server, location, limit_except
Syntax: auth_basic_user_file file; Default: — Context: http, server, location, limit_except
新建一個密碼文件,名稱爲auth_conf,用戶名爲xixi,回車後輸入密碼123456,確認密碼工具
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