2017-04-19 11 views
0

私の要件は2つの異なるタイプのユーザーが1つあり、管理ユーザーと別のユーザーが通常のユーザーです。管理ユーザーはすべてのURLにアクセスでき、通常のユーザーはアクセスを拒否されたURLにアクセスしようとすると、1つのURLにしかアクセスできません。nginxの異なるユーザーのアクセスを制限する

現在、adminユーザーの詳細は.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; 
    } 
} 

助けてください。

答えて

0

auth_basic off;を使用して、特定のlocationブロックへのアクセスを許可することができます。

ブロックは完全でなければなりません(そして、周囲ブロックからproxy module configuration statementsの一部を継承することができます)。

許可されたURIが他のリソースファイルを指定する可能性があるため、複数のURIを一致させるには、regular expression location blockを使用する必要があります。例えば

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; 
} 
+0

私はユーザーに作成した場合は、httpasswd.usersのようなファイルや他のhttpasswd.adminである、それはhttpasswd.adminユーザーがすべてのURLにアクセスすることができますが、httpasswd.usersが唯一のテストにアクセスすることが可能です.com/dashboard –

+0

いいえ、2つのファイルは重複しないスコープを持ちますが、 'httpasswd.admin'ファイルのすべてのエントリが' httpasswd.users'ファイルにも存在することを確認できます。 –

関連する問題