限制nginx中不同用户的访问权限

时间:2017-04-19 09:56:02

标签: .htaccess nginx nginx-location

我的要求是我有两个不同的用户,一个是管理员用户,另一个是普通用户。管理员用户可以访问所有URL,普通用户只有在尝试访问其他访问被拒绝的URL时才能访问一个URL。

目前我可以设置管理员用户规则,其中管理员用户详细信息在.htpasswd中提及,并且它可以正常工作。以下是配置文件。

    server {
    listen 8880;

    server_name test.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以使用auth_basic off;来访问特定的location块。

但是,location块必须完整(并且可以从周围的块继承一些proxy module configuration statements)。

您可能需要使用regular expression location block来匹配多个URI,因为允许的URI可能指定其他资源文件。

例如:

auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;

location / {
    proxy_pass http://localhost:5601;
}

location ~ ^/(allowed/uri.html|some.js|some.css)$ {
    auth_basic off;
    proxy_pass http://localhost:5601;
}