国内因为备案的原因,所有服务器都要禁止使用IP访问网站。否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了。这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下。
如下的配置项,可以设置允许使用IP访问网站。
server {
listen ;
server_name "";
}
这里相当于是绑定了一个空的主机头,于是任意主机头,只要是指向这个IP的都可以打开网站了。
也可以把这些流量收集起来,导进到本人的网站,只需做以下跳转设置就可以:
server { listen default;
rewrite ^(.*) http://www.abc.com;
}
如果需要Nginx禁止使用IP访问网站,可以定义如下主机,丢弃这些请求:
server {
listen default;
server_name "";
return ;
}
或者
server {
listen default;
server_name _;
return ;
}
在这里,我们设置主机名为空字符串以匹配未定义“Host”头的请求,而且返回了一个nginx特有的,非http标准的返回码444,它可以用来关闭连接。
从0.8.48版本开始,这已成为主机名的默认设置,所以可以省略server_name "",即如下的配置即可:
server {
listen ;
return ;
}
限制某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;
allow 1.1.1.1;
allow 1.1.1.2;
allow 192.168.1.0/;
deny all;
deny 1.1.1.1;
deny 192.168.1.0/;
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