環境
系統環境:CentOS6.7
nginx version: nginx/1.8.1
一、基于Basic Auth認證
Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要輸入正確的用戶名和密碼之后才能正確的訪問網站。
我們使用htpasswd來生成密碼信息,首先要安裝httpd-tools,在httpd-tools中包含了htpasswd命令。
yum install -y httpd-tools
接下來我們就可以創建用戶和密碼了,例如創建一個loya的用戶,執行命令:
htpasswd -c /opt/nginx/.htpasswd loya
按照提示輸入兩次密碼之后就創建成功了,然后再修改Nginx的配置,編輯/opt/nginx/conf/vhosts/www.conf,在配置后面添加兩行配置:
server { .... auth_basic "Restricted"; auth_basic_user_file /opt/nginx/.htpasswd;}
reload nginx后生效
/opt/nginx/sbin/nginx -s reload
二、基于IP的訪問控制
通過IP進行訪問控制基于nginx模塊ngx_http_access_module,
1.模塊安裝
nginx中內置ngx_http_access_module,除非編譯安裝時指定了–without-http_access_module,當然一般沒人這么干吧。
2.指令
allow
語法: allow address | CIDR | unix: | all;
默認值: -
配置段: http, server, location, limit_except
允許某個ip或者一個ip段訪問。如果指定unix:,那將允許socket的訪問,unix在1.5.1才新加入。
deny
語法: deny address | CIDR | unix: | all;
默認值: -
配置段: http, server, location, limit_except
禁止某個ip或者一個ip段訪問.如果指定unix:,那將禁止socket的訪問,unix在1.5.1才新加入。
3.示例
location / {deny 192.168.1.1;allow 192.168.1.0/24;allow 10.1.1.0/16;allow 2001:0db8::/32;deny all;}
從上到下的順序,類似iptables。匹配到了便跳出。如上的例子先禁止了192.16.1.1,接下來允許了3個網段,其中包含了一個ipv6,最后未匹配的IP全部禁止訪問.
被deny的將返回403狀態碼。
總結
以上就是關于nginx訪問控制的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答