wadge Asked: 2015-06-06 10:17:09 +0800 CST2015-06-06 10:17:09 +0800 CST 2015-06-06 10:17:09 +0800 CST 为除办公室 IP 之外的所有人阻止 Nginx 772 是否可以配置 nginx 以便只能从办公室 IP 地址访问所有网站? 这是一个开发服务器,在某些站点(太多无法一个一个阻止)上意外有一些视图和活动正在进行,我想阻止除办公室中来自办公室 IP 的人员之外的每个人的访问。 有什么办法吗? nginx 4 个回答 Voted Best Answer cadmi 2015-06-09T02:19:01+08:002015-06-09T02:19:01+08:00 为什么需要防火墙?allow/deny指令不仅可以在location节中使用,也可以在节中使用http。 http { allow 192.168.1.10; # office ip deny all; server { server_name acme1.com; # ... } server { server_name acme2.com; # ... } } Ludo 2015-06-06T10:47:18+08:002015-06-06T10:47:18+08:00 听起来更像是防火墙的工作。假设您正在运行 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 Ubertone 2015-06-06T10:36:51+08:002015-06-06T10:36:51+08:00 我会使用 iptables 来阻止除您办公室以外的所有 IP 的端口 80。 krisFR 2015-06-06T15:58:45+08:002015-06-06T15:58:45+08:00 如前所述,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
为什么需要防火墙?
allow/deny
指令不仅可以在location
节中使用,也可以在节中使用http
。听起来更像是防火墙的工作。假设您正在运行 Linux,您可以使用 iptables。
我会使用 iptables 来阻止除您办公室以外的所有 IP 的端口 80。
如前所述,
iptables
是一种选择。作为替代方案,您可以使用 Nginx
ngx_http_access_module
来限制访问。例如,假设您的办公网络是
192.168.1.0/24
:或者
注意:使用这种方法,IP 不允许的用户将得到一个
403
,而不是“站点无法访问”。http://nginx.org/en/docs/http/ngx_http_access_module.html