是否可以配置 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
,而不是“站点无法访问”。