這篇文章主要介紹了Nginx中禁止使用IP訪問網站的配置實例,一般在備案時可能需要這種設置,需要的朋友可以參考下
國內因為備案的原因,所有服務器都要禁止使用IP訪問網站。否則,如果允許使用IP訪問網站,那隨便解析一個域名到該IP,訪問該域名就可以打開網站了。這是一個極大的風險!Nginx中可以很方便的來解決這個問題,小菜鳥來跟大家一起探討一下。
如下的配置項,可以設置允許使用IP訪問網站。
server {
listen 80;
server_name "";
}
這里相當於是綁定了一個空的主機頭,於是任意主機頭,只要是指向這個IP的都可以打開網站了。
也可以把這些流量收集起來,導進到本人的網站,只需做以下跳轉設置就可以:
server {
listen 80 default;
rewrite ^(.*) http://www.abc.com;
}
如果需要Nginx禁止使用IP訪問網站,可以定義如下主機,丟棄這些請求:
server {
listen 80default;
server_name "";
return 444;
}
或者
server {
listen 80 default;
server_name _;
return 500;
}
在這里,我們設置主機名為空字符串以匹配未定義“Host”頭的請求,而且返回了一個nginx特有的,非http標准的返回碼444,它可以用來關閉連接。
從0.8.48版本開始,這已成為主機名的默認設置,所以可以省略server_name "",即如下的配置即可:
server {
listen 80;
return 444;
}
限制某IP登陸網站
allow all;
deny all;
其中網段的寫法是這樣的:192.168.1.0/24這樣的形式。
deny 192.168.1.11;
deny 192.168.1.123;
deny 10.0.1.0/24;
如果你想實現這樣的應用,除了幾個IP外,其他全部拒絕,
那需要你在ip.balcklist中這樣寫
然后在在nginx的配置文件nginx.conf中加入:include blocksip.conf; 或者直接在相應虛擬主機server{中填寫}
allow 1.1.1.1;
allow 1.1.1.2;
allow 192.168.1.0/24;
deny all;
如果你想實現這樣的應用,禁止幾個IP,其他通過,
deny 1.1.1.1;
deny 192.168.1.0/24;
allow all;
單獨網站屏閉IP的方法:
在server"{}",在這個大括號內加入deny IP地址是限制某IP地址訪問;allow IP地址是只允許某IP地址訪問;
#屏蔽單個IP的命令是
deny 123.45.6.7
#封整個段即從123.0.0.1到123.255.255.254的命令
deny 123.0.0.0/8
#封IP段即從123.45.0.1到123.45.255.254的命令
deny 124.45.0.0/16
#封IP段即從123.45.6.1到123.45.6.254的命令是
deny 123.45.6.0/24