使用nginx配置 server_name _ 拒绝所有以ip形式访问的
时间: 2024-10-21 11:06:45 浏览: 34
详解Nginx虚拟主机配置中server_name的具体写法
在Nginx服务器中,如果你想要拒绝所有以IP地址形式访问而只允许通过域名访问,你可以通过`server_name`指令来进行限制。通常,`server_name`用于指定一个或多个域名,如果请求的主机头(Host header)不符合任何一个列出的域名,Nginx就会将这个请求作为非标准请求处理。
如果你想阻止直接使用IP地址的访问,可以在每个`server`块中设置`server_name`为`_`通配符,表示匹配所有域名,然后在该块内部添加一个条件,比如使用`if ! $host ~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ { return 403; }`来检查请求的主机头是否是纯数字IP。这行代码的意思是,如果主机头不是由点分十进制IP组成,就返回HTTP状态码403(禁止访问)。
以下是配置示例:
```nginx
server {
listen 80;
server_name _;
# 先尝试正常的域名匹配
location / {
# 正常的业务处理...
}
# 如果请求是纯IP,则禁止访问
if ($host !~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$) {
return 403;
}
}
```
阅读全文