如果存在自定义标头,Nginx 允许访问

Mac*_*hyk 7 nginx web-server

有没有办法仅当存在某些自定义标头并且值匹配时才允许访问目录?对于 apache,我一直使用 SetEnvIf 来实现。我怎样才能用 nginx 做到这一点?

基本上我有一个只能由我访问的开发服务器,但我有动态IP并且必须每天更改配置文件。使用 apache,我只需将浏览器设置为发送一个类似于访问密码的自定义标头,如果该标头值正确,apache 将允许访问。

小智 7

我做了很多研究来解决一个简单的问题:如果请求在标头中具有特定令牌,则仅允许 proxy_pass 。我尝试了这里所有的答案,但没有一个像我喜欢的那样有效。我的最终解决方案是:

location /api {
    proxy_http_version 1.1;

    if ($http_authorization != "Bearer 1234") {
        return 401;
    }

    proxy_pass http://app:3000/;
}
Run Code Online (Sandbox Code Playgroud)

参考:

/sf/ask/3201403271/

/sf/ask/870204751/

Nginx 位置精确匹配无可争议

https://www.nginx.com/resources/wiki/start/topics/深度/ifisevil/


Jay*_*Tee 2

您的实际问题在这里得到解答:

/sf/ask/1327943431/

话虽如此,为什么不使用基本身份验证呢?这使它成为一个密码,而不是像密码一样。

http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html