如何在 nginx 中限制每个 HTTP 主机的单个 IP 的访问?

如何在 nginx 中限制每个 HTTP 主机的单个 IP 的访问?

我有一台服务器,其中有多个网站,每个网站都有自己的主机。

nginx 中是否有办法阻止访问0.0.0.0/0并允许特定 IP,比如说1.2.3.4/32特定网站(特定主机/域名)?

例如:

  • 如果 HTTP 请求带有主机标头,则www.something-public.com全部允许。
  • 如果 HTTP 请求带有主机标头,则www.something-private.com拒绝所有请求并允许特定的 IP 地址。

我遇到的另一个问题是网站所有者不受信任,我想通过此规则来限制他们,不允许他们通过网站目录中的配置文件(例如.htaccess覆盖父目录设置的文件)进行更改

答案1

模块ngx_http_access_module具有可放入服务器块的允许和拒绝命令。

server {
  server_name www.something-public.com;
  allow all; // I think this is the default and the statement is not needed
}

server {
  server_name www.something-private.com;
  allow 192.168.1.1/32;
  deny  all;
}

相关内容