nginx 阻止处理未定义的服务器名称

46 阅读1分钟

在 Nginx 中,如果你希望阻止处理未定义的服务器名称(Server Name),可以使用一个默认的服务器块(server block)来捕获这样的请求。默认服务器块是在配置文件中没有其他服务器块匹配请求的情况下执行的。

以下是一个示例配置,演示如何配置默认服务器块:

# 默认服务器块,用来阻止处理未定义的服务器名称
server {
    listen 80 default_server;
    server_name _;

    return 444; # 返回一个空响应,表示不处理此请求
}

# 其他服务器块...

在这个例子中:

  • listen 80 default_server; 表示这是一个默认服务器块,监听在80端口上。
  • server_name _; 使用 _ 作为通配符,表示匹配所有未定义的服务器名称。
  • return 444; 返回一个特殊的状态码 444,它表示连接已关闭,没有向客户端发送任何响应。

通过这样配置,默认服务器块会捕获所有未匹配的请求并关闭连接,实际上不会处理这些请求。可以根据需要调整默认服务器块的配置,比如返回其他状态码或自定义错误页面。