Nginx拒绝不阻止动态URL

时间:2019-02-15 12:52:52

标签: php nginx url-rewriting nginx-location

除IP外,我想阻止所有人访问我的登台服务器站点。 问题是其中一个页面具有动态URL,由于某种原因,我仍然可以使用其他IP访问该页面。


location / {

    satisfy  any;
    # allow my ip
    allow  1.2.3.4;
    # drop rest of the world
    deny    all;

    auth_basic            "Authentication Required";
    auth_basic_user_file  /etc/nginx/passwd;

    index  index.php index.html index.htm;

    # remove .php extension
    try_files $uri $uri/ @rewrite;

    sendfile   off;

    rewrite ^/color/(.*)$ /color.php?url=$1&name=&submitBtn=check;
}

location @rewrite {
      rewrite ^ $uri.php last;
}

上面的代码将使我的IP无需密码即可访问站点上的任何页面,但在授予访问权限之前,将要求其他任何人输入密码。

这适用于除动态URL页面之外的所有页面。在动态URL页面上,从其他IP访问页面时会显示密码,但该页面仍会加载,因此该密码无用。

我尝试给动态URL提供自己的location块,该块可以阻止所有IP(我的IP除外)访问动态页面而无需先提供密码,但是当我这样做时,我得到了尝试从我的IP地址访问动态页面时出现404错误。

location / {
    ...
}

location ~ ^/color/(.*)$ {
    satisfy  any;
    # allow my ip
    allow  1.2.3.4;
    # drop rest of the world
    deny    all;

    auth_basic            "Authentication Required";
    auth_basic_user_file  /etc/nginx/passwd;
}

编辑:我认为重写的URL是导致问题的原因,例如rewrite ^/color/(.*)$ /color.php?url=$1&name=&submitBtn=check;,因为我也可以导航到mysite.com/color,并且即使显示了浏览器密码字段,也可以加载其他IP。 / p>

0 个答案:

没有答案