首先找到nginx的配置文件,只要在相關配置文件中添加一些配置語句即可。
簡單使用配置
- 屏蔽單個IP地址,使用關鍵詞deny,例如:
deny 10.11.12.13
- 允許單個IP地址,使用關鍵詞allow,例如:
allow 10.11.12.14
- 屏蔽所有的IP地址:
deny all
- 允許所有IP地址:
allow all
- 屏蔽一定范圍內IP地址,使用IP地址加子網掩碼的組合。例如:
- 屏蔽10.0.0.1~10.255.255.254這個范圍的ip地址:
deny 10.0.0.0/8
- 屏蔽10.11.0.1~10.11.255.254這個范圍的IP地址:
deny 10.11.0.0/16
- 屏蔽10.11.12.1~10.11.12.254這個范圍的IP地址:
deny 10.11.12.0/24
- 屏蔽10.0.0.1~10.255.255.254這個范圍的ip地址:
- 允許一定范圍內的IP地址訪問,同上所示,關鍵詞換成
allow
。
以上只是最基本的使用方法,那么問題來了,nginx做代理的時候,可以監聽多個地址或者指向不同的網站,那么該怎么只針對不同的網站做區分呢?
指定代理網站添加屏蔽策略
針對上面的問題,我們只要把屏蔽IP的語句放在不同的位置就好了。在nginx的配置文件中,不同的語句塊所產生的影響效果也是不一樣的。
語句塊 | 效果 |
---|---|
http{} |
對nginx的所有服務生效,所有代理網站都會受到影響 |
server{} |
指定的server服務,只對配置的代理網站起作用 |
location |
指定的訪問地址 |
limit_except |
指定的http方法謂詞 |
如果現在有幾百個不同的IP地址,它們又分布在不同的網段,這時候寫在配置文件中,每個IP寫一行,那這個配置文件豈不是要寫的無比的長,可讀性就太差了,修改起來也不方便。這時候我們該怎么辦呢?
寫成單獨的屏蔽策略配置文件
新建一個配置文件,例如blockip.conf
,把所有的屏蔽ip策略可以寫在這個文件中,最后我們只要在nginx的配置文件nginx.conf
中引入即可,還可以在不同的語句塊中引入,效果同上表所示。
屏蔽策略配置文件中可以寫允許的IP地址,也可以寫屏蔽的IP地址。但是有一點,當你只放開幾個IP地址,然后屏蔽剩余所有IP地址時,一定要先寫放行的ip地址。
# 放行部分ip訪問
allow 10.11.12.13;
allow 10.11.12.14;
allow 10.11.12.15;
# 禁止其余ip訪問
deny all;
示例配置:
location /commonService/ {
include blockip.conf;
proxy_pass http://127.0.0.1:8082/;
}