在Nginx中如何允许一些IP&;允许来自移动设备的所有请求


In Nginx how to allow some IPs & allow all requests from mobile devices?

我想

1) 拒绝除10.1.1.1(来自浏览器)之外的所有IP地址

2) 允许来自android(或任何其他)设备的所有请求

我有下面的nginx代码片段,但它给出了错误

此处不允许使用"允许"指令

location / {
            allow 10.1.1.1; //allow for this IP only and deny for all browser request
            deny  all; 
            if ($http_user_agent ~* "(android") { //allow for android user-agent for now
                 allow all; // allow access to all mobile users
            }
.
.
.}

如何实现这一点或采取任何替代方案?

基本上,如果客户端的IP不是10.1.1.1,你想阻止最终用户如果用户代理不是安卓

对于所有其他条件,您希望提供正确的内容。因此,在vhost配置文件中放置以下内容:

        if ($remote_addr != 10.1.1.1 ) {
                set $myvar "N";
        }
        if ($http_user_agent !~* "android") {
               set $myvar "${myvar}A";
        }
        if ($myvar = NA) {
                return 403;
           }

这里我使用了一个变量$myvar。

如果IP不是10.1.1.1,则指定值N。如果用户代理不是android,则指定值A。只有当客户端的IP不是10.1.1.1时,才分配值NA。而且用户代理不是安卓系统。在这种情况下,返回403以阻止用户。