nginx默认允许使用IP直接访问http服务。
如果没有指明,切nginx设置了多个站点,会自动指向第一个加载的server。
如果需要限制必须使用域名访问可以按如下方法设置。
方法1:
在第一个加载的server区域内添加如下配置代码:
server_name www.a.com;
if ( $host != 'www.a.com' ){
return 403;
}
保存后重启nginx 服务,使用ip访问站点时会返回403错误。
方法2:
在第一个加载的server区域之外,并且之前一行,添加如下代码:
server { listen 80 default; server_name _; return 500; }
保存后重启nginx 服务,使用ip访问站点时会返回500错误。
这个实际上是将ip访问作为第一个server加载,并返回500错误。
方法2比较保险,它明确声明了默认server模块,在server模块加载顺序变化时也确保生效。
方法1则存在因为加载顺序的问题导致无法实现对ip直接访问的限制。如果要确保效果,就要每个server模块里都加对主机域名的判断。这样就不太方便了。