在nginx服务器之间共享authentication数据

我有一个使用端口9200和9292(用于logstash)的http服务器。

由于服务器不支持身份validation,我想设置一个nginx反向代理来处理身份validation。

这是我使用的configuration:

server { listen 9292 default_server; server_name proxy_host; location / { proxy_pass http://logstash_server:9292; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } } server { listen 9200 default_server; server_name proxy_host; location / { proxy_pass http://logstash_server:9200; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } } 

当我去http://proxy_host:9292 ,浏览器要求我进行身份validation,但是当我redirect到http://proxy_host:9200 ,我需要再次进行身份validation。

有没有一种方法来共享两个代理之间的身份validation数据,以便身份validation将只发生一次?

auth问题不是来自Nginx,而是来自您的浏览器。 Web浏览器使用整个元组“[scheme]:// [domain]:[port]”来区分身份validation域,因此,如果您的服务器共享相同的身份validation后端,则无关紧要,因为您的浏览器将分别为每个域。

我唯一可以想到的方法是在同一个Nginx服务器块之后代理两个应用服务器,并通过URLpath区分查询,例如:

 server { listen 9200 default_server; server_name proxy_host; location /stash9292 { proxy_pass http://logstash_server:9292; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } location /stash9200 { proxy_pass http://logstash_server:9200; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } location / { proxy_pass http://logstash_server:9200; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }