如何完全禁止使用服务器IP地址访问nginx?

How to completely disable access to nginx using server IP address?

由于我使用的是启用了 DNS 代理的 Cloudflare,我不希望用户找到 out/use 原始服务器 IP 地址并绕过 Cloudflare 安全和保护措施(正在托管具有不同域的多个网站在此服务器上)。

经过一些研究,我唯一能找到的解决方案是将下面的代码添加到默认站点配置中。

server {
    listen      80 default_server;
    listen      [::]:80 default_server;
    server_name "";
    return      444;
}

此方法“有效”,但是会出现一些问题:

  1. 仍然可以使用 https://
  2. 访问该网站
  3. 这个方法似乎并没有真正禁用使用 IP 地址的 nginx 访问,它只是没有 return 任何东西。

是否有更好的方法来禁用使用 IP 的 nginx 访问address/is是否可以改进我当前的方法?

服务器OS Nginx 版本
Ubuntu 20.04.2 LTS(GNU/Linux 5.4.0-72-通用 x86_64) nginx/1.18.0

您可以在您的 L4 防火墙上为仅具有 Cloudflare IP 的源服务器配置 https 允许规则 https://www.cloudflare.com/ips/

另一种方法是,您可以 运行 源服务器上的 Cloudflare 隧道。 您将不必再发布您的原始 IP。 https://www.cloudflare.com/products/tunnel/ https://developers.cloudflare.com/cloudflare-one/connections/connect-apps