为除办公室 IP 之外的所有人阻止 Nginx

为除办公室 IP 之外的所有人阻止 Nginx

是否可以配置 nginx 以便所有网站只能从办公室 IP 地址访问?

这是一个开发服务器,在某些网站上(太多了,无法一一阻止)意外地出现了一些浏览和活动,我想阻止除来自办公室 IP 的办公室人员之外的所有人访问。

有什么办法吗?

答案1

为什么需要防火墙?allow/deny指令不仅可以在location部分中使用,也可以在http部分中使用。

http {
  allow 192.168.1.10; # office ip
  deny all;

  server {
    server_name acme1.com;
    # ...
  }

  server {
    server_name acme2.com;
    # ...
  }

}

答案2

听起来更像是防火墙的工作。假设您正在运行 Linux,则可以使用 iptables。

iptables -A INPUT -p tcp --src source_address --dport destination_port -j ACCEPT
iptables -A INPUT -p tcp --dport destination_port -j DROP

答案3

我将使用 iptables 来阻止除您的办公室之外的所有 IP 的端口 80。

答案4

如上所述,iptables是一种选择。

或者,您可以使用 Nginxngx_http_access_module来限制访问。

例如假设您的办公室网络是192.168.1.0/24

location / {
    allow 192.168.1.0/24; # Office network
    deny  all;
    ...
    ...
}

或者

location / {
    allow 192.168.1.10; # James
    allow 192.168.1.11; # John
    deny  all;
    ...
    ...
}

注意:使用此方法,IP 不被允许的用户将获得403,而不是“站点无法访问”。

http://nginx.org/en/docs/http/ngx_http_access_module.html

相关内容