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

时间:2016-04-18 11:01:49

标签: php nginx configuration

我想

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
            }
.
.
.}

如何实现这一目标或任何替代方案?

1 个答案:

答案 0 :(得分:0)

基本上,您希望阻止最终用户,如果客户端的IP不是10.1.1.1 如果用户代理不是Android

对于所有其他条件,您希望提供正确的内容。因此,请将以下内容放在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. 如果User-Agent不是android,则分配值A. 仅分配值NA如果客户端的IP不是10.1.1.1。而用户代理不是Android。在这种情况下,返回403以阻止用户。