2017-09-14 62 views
0

我需要达到这样的效果,当用户点击Domain IP/Keepalived Ip(如z.z.z.z)时,基本的http身份验证应该询问用户名和密码。现在如果用户名是vikas,它应该重定向到z.z.z.z:5601,如果用户是gopal,它应该重定向到z.z.z.z:5602。Nginx上的服务器名称和端口号是否相同?

所以这里我有一个主要依赖用户,就像我需要检查前重定向,如果用户是Vikas或Gopal。我正在尝试追踪,但如果我使用单个位置stenza,它只能正常工作。

upstream kibana { 
     server 171.x.x.x:5601; 
     server 172.x.x.x:5601; 
     } 
upstream kibana2 { 
     server 171.x.x.x:5602; 
     server 172.x.x.x:5602; 
     } 
     server { 
     listen 80; 
     listen 443 ssl; 
     server_name z.z.z.z; 
     location/{ 
     auth_basic  "protect kibana"; 
     auth_basic_user_file /etc/nginx/htpasswd.user; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://kibana; 
       } 
     location/{ 
     auth_basic  "protect kibana"; 
     auth_basic_user_file /etc/nginx/htpasswdkibana2.user; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://kibana2; 
       } 
     } 

所以在第二个位置指令我使用不同的http密码文件。所以现在的情况是,网页要求用户名和密码,但它没有选择任何一个,我输入了凭证,它清除它并再次要求凭证。有人可以帮助我实现这一点。

问候 维卡斯

回答

1

我认为你可以做到这一点通过检查用户的名称,并将其发送到基于该

map $remote_user $server_based_on_user { 
    "vikas" "kibana"; 
    "gopal" "kibana2"; 
} 

upstream kibana { 

    server 171.x.x.x:5601; 
    server 172.x.x.x:5601; 
} 

upstream kibana2 { 

    server 171.x.x.x:5602; 
    server 172.x.x.x:5602; 
} 

server { 

    listen 80; 
    listen 443 ssl; 
    server_name z.z.z.z; 

    location/{ 
     auth_basic "protect kibana"; 
     auth_basic_user_file /etc/nginx/htpasswd.user; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://$server_based_on_user$request_uri; 
    } 
} 

/etc/nginx/htpasswd.user文件后端应该有两个用户定义

+0

感谢您的回复,以上我能够用vikas用户和网站登录,但是当我用gopal用户尝试时,我得到“502错误网关”nginx错误。你能建议这可能是什么? – user3332404

+0

Nginx日志所需的 –

+0

这是我可以在/ var/log/nginx error.log中看到的“172.xxx - - [15/Sep/2017:02:35:20 -0400]”GET/HTTP/1.1“401 597” - “”Mozilla/5.0(Windows NT 6.1; Win64; x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/60.0.3112.113 Safari/537.36“ 171.xxx - gv [15/Sep/2017 :02:35:24 -0400]“GET/HTTP/1.1”502 575“ - ”“Mozilla/5.0(Windows NT 6.1; Win64; x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/60.0.3112.113 Safari/“537.36”“ – user3332404

相关问题