为什么要禁止ip访问页面呢?
这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。
方法一:
在server段里插入正则,非指定域名访问直接返回403
server {
listen 80;
server_name www.hello.com;
if ($host != 'www.hello.com'){
return 403;
}
针对多个名和地址的逻辑OR的配置方法,如果nginx上联有负载均衡,请使用$http_x_forwarded_for参数
server {
listen 80;
server_name aaa.test.com bbb.test.com 222.222.222.222;
set $my_server_name ''; ##设定一个变量
##判断条件
if ($host = 'aaa.test.com'){
set $my_server_name 1;
}
##判断条件
if ($host = 'bbb.test.com'){
set $my_server_name 1;
}
##判断条件
if ($host = '192.168.0.1'){
set $my_server_name 1;
}
##判断条件,nginx上联有负载均衡
if ($http_x_forwarded_for = '222.222.222.222'){
set $my_server_name 1;
}
##判断条件
if ($my_server_name != 1){
return 403;
}
......
方法二:
添加一个新的server(注意是新增,并不是在原有的server基础上修改)
server {
listen 80 default;
server_name _;
##以下两种二选一
rewrite ^(.*) http://www.hello.com permanent; ##强制跳转到指定的网址
return 403; ##或者直接返回403
}
原来server里面修改server_name
server {
listen 80;
server_name www.hello.com;
....
}
网友评论