Nginx 禁止直接通过 IP 地址访问,只允许通过域名访问

# 这个server块必须放在最前面,或者使用 `listen 80 default_server;`
server {
    # 监听 80 端口,并设置为默认服务块。
    # 任何未匹配到其他server_name的请求都会落到这里。
    listen 80 default_server;
    listen [::]:80 default_server; # 如果需要监听IPv6

    # 可以匹配任何主机名,因为这里没有指定server_name,或者你可以写一个无效的。
    server_name _; # _ 是一个无效的域名,绝不会匹配任何真实请求,这里只是一个惯例。

    # 直接返回错误码,最简单高效
    return 444; # 444 是 Nginx 自定义的非标准错误码,会直接关闭连接,不发送任何响应头。

    # 或者你也可以返回其他错误码
    # return 403; # 返回 403 Forbidden 错误
}

# 你的正常网站配置
server {
    listen 80;
    #listen [::]:80;
    server_name www.yourdomain.com;

    # 你其他的配置,如root, index, location等
    root /var/www/yourdomain.com;
    index index.html;

    # ... 
}