只允许nginx的本地用户

我想限制某些VHost的访问权限,以便只有127.0.0.1才能访问它。 我总是用这样的东西来绑定VHost到本地主机而不是外部IP:

server { listen 127.0.0.1; server_name myvhost.local; location / { .... } } 

但是我注意到一些教程还包含了localhost的显式allow指令,并且明确地否认所有其他指令:

 server { listen 127.0.0.1; server_name myvhost.local; location / { allow 127.0.0.1; deny all; ... } } 

这些allow / deny指令真的需要时,我只听127.0.0.1?

listen指令告诉操作系统Web服务器绑定自己的接口。 所以,当你在启动nginx之后查看netstat -a ,你会发现nginx只在127.0.0.1 IP端口80上侦听,这意味着nginx服务器不能通过任何其他接口访问。

绑定到一个特定的IP地址在实际networking堆栈中的工作水平比在nginxconfiguration中的allow / deny指令低。

这意味着你的用例不需要在你的configuration里面有单独的allow / deny指令,因为在networking堆栈中连接的数量有限。

如果你指定listen 80; 只有使用allow / deny指令,那么nginx会发送一个HTTP错误码给客户端,告诉访问被拒绝。

随着listen 127.0.0.1; 情况下,浏览器根本无法连接到服务器,因为没有打开TCP端口供浏览器连接。

假设您的networkingID是192.168.1.0 ,请编辑您的conf文件,如下所示:

 location / { # block one workstation deny 192.168.1.1; # allow anyone in 192.168.1.0/24 allow 192.168.1.0/24; # drop rest of the world deny all; } 

请让我知道它是如何为你工作的。

编辑#1:

是的,根据官方的Nginx wiki ,allow指令是必须的。 他们的例子是:

 location / { allow 192.168.1.1/24; allow 127.0.0.1; deny 192.168.1.2; deny all; }