author:咔咔nginx
wechat:fangkangfk測試
基於ip的訪問控制代理
http_access_moduleunix
基於用戶信任登陸code
http_auth_basic_moduleserver
下來咱們解釋第一個基於IP的訪問控制
語法: ip
// 容許的訪問 ip Syntac:allow address | CIDR | unix: | all Default: Context: http,server,location,limit_except // 不容許訪問 Syntac:deny address | CIDR | unix: | all Default: Context: http,server,location,limit_except
配置:it
第一種是除了222.128.189.17ip不可訪問,其餘的任何形式均可以訪問io
第二種是隻容許222.128.189.17ip訪問,其餘的都不容許訪問 反向代理
以上的訪問都是基於http_access_module訪問的
下來咱們說一下這種方式的侷限性
http_access_mosule這種基於ip控制訪問的是須要客戶端直接請求服務端才能夠生效的,可是咱們使用nginx最長用的功能就是反向代理,從下圖就能夠看出來,只要通過反向代理咱們的服務端是獲取不到客戶端的ip的。
這個時候就有個好東西出現了,那就是x_forwarded_for,這個協議是能夠將客戶的ip跟反向代理的ip一塊兒發送給咱們的服務端,就解決了這個問題
解決方案:
方法一:採用別的HTTP頭信息控制訪問,如HTTP_X_FORWARD_FOR,但這是一種協議,並非所有都支持
方法二:結合geo模塊來實現(這個須要在後邊單獨講解)
方法三:經過http自定義變量傳遞
實現方式二:基於用戶信任登陸
http_auth_basic_module
咱們須要先安裝這個庫
yum -y install httpd
建立一個用戶kaka的用戶
修改nginx.conf配置文件
測試
對於http_auth_basic_module侷限性,這裏簡單的提一下倆個方案
這個在後邊的都會寫到的,先知道有這個就能夠了,掌握http_auth_basic_module這個控制模塊
對於這個htpasswd這個用法也簡單的說一下
// 修改一個用戶密碼 htpasswd -d password.user kaka // 添加一個用戶直接用戶密碼寫完 htpasswd -b .passwd Jack 123456 // 刪除一個用戶 htpasswd -D password.user kaka