Nginx 拒绝 URL 503,除非存在 url 参数

Nginx 拒绝 URL 503,除非存在 url 参数

我目前将 WordPress 文件 wp-login.php 限制为仅限我的 IP 地址 - 但如果存在给定的 URL 参数,我想允许访问该页面。

所以本质上这就是我尝试过的

location ~ ^/(wp-admin|wp-login\.php) {
    if ($arg_action = "true") {
        break;
    }

    allow xx.xxx.xxx.xxx;
    deny all;
    // fastcgi_params
}

因此,在此代码片段中,如果用户访问 wp-login.php?action=true,则页面应显示。但如果用户访问 wp-login.php,则应被拒绝。

但是此代码不起作用,如有任何提示我将不胜感激。

答案1

这应该对你有用,检查arg是否找到它返回error 418,然后将其移交给指定的位置iplocation,然后检查 ips 并完成其余配置

error_page 418 = @iplocation;
recursive_error_pages on;
location ~ ^/(wp-admin|wp-login\.php) {
    if ($arg_action = "true") {
        return 418;
    }
location @iplocation {  
    allow xx.xxx.xxx.xxx;
    deny all;
    // fastcgi_params
}

答案2

问题是休息仅退出 if{}。它不会退出位置。

http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#break

该代码应该可以工作:

location ~ ^/(wp-admin|wp-login\.php) {
    if ($arg_action != "true") {
        return 403;
    }

    allow xx.xxx.xxx.xxx;
    deny all;
    // fastcgi_params
}

編輯:修正了拼写错误。

相关内容