2013-10-14 5 views
13

के साथ हेडर सेट करना मैं एक सफल प्रमाणीकरण अनुरोध पर शीर्षलेख सेट करने के लिए auth_request का उपयोग करना चाहता हूं और उसके बाद उस अगली प्रॉक्सी इनलाइन के माध्यम से वास्तविक अनुरोध को संभालेगा।एनजीआईएनएक्स auth_request प्रॉक्सी

मैंने एनजीआईएनएक्स और विभिन्न प्रॉक्सी को अपनी बात करने के लिए सेट अप किया है, हालांकि मुझे यकीन है कि सर्वर से हेडर सेट करने के लिए (आरेख में ऑथ प्रॉक्सी) को सेट करना है, जिसे मैं ऑथ अनुरोध के लिए उपयोग कर रहा हूं जैसे कि हेडर अगले सर्वर (चित्र में बैकएंड सर्वर)

NGINX ---- auth request ----> AUTH PROXY 
            | 
    |  <---  201 <------ SUCCESS 
    | 
    ----> underlying request ----> BACKEND SERVER 

मेरे nginx config लग रहा है

तरह
server {              
    listen     9123;        
    resolver     10.3.0.2;       
    resolver_timeout   30;        

    location/{            
     auth_request  /_auth;        
     proxy_set_header x-user $http_x_user;     
     proxy_pass  http://backend_server;     
    }               

    location = /_auth {          
     internal;            
     proxy_pass https://auth;   
     proxy_pass_request_body off;       
     proxy_set_header Content-Length "";      
     proxy_set_header X-Original-URI $request_uri; 
    }                                
}                

जब मैं (वास्तविक अनुरोध मैं nginx डीबग लॉग में निम्न देखें बनाने के इस भाग है पारित हो जाता है ऑथ सर्वर से प्रतिक्रिया का):

2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Content-Type: text/html; charset=utf-8"  
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Date: Mon, 14 Oct 2013 17:46:42 GMT"  
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Server: nginx/1.2.5"      
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Vary: Cookie"      
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "x-user: 1" 

मैं x-user शीर्षलेख लेना चाहता हूं और बैकएंड सर्वर से गुजरना चाहता हूं।

मैं location / ब्लॉक में विभिन्न संयोजनों की कोशिश की है, लेकिन उनमें से कोई भी अभी तक काम किया है। जैसे

  • proxy_set_header x-user $upstream_http_x_user;
  • proxy_set_header x-user $http_x_user;
  • proxy_set_header x-user $sent_http_x_user;
  • proxy_pass_header x-user

इनमें से कोई नहीं काम करने के लिए लग रहे हैं। कोई भी विचार कैसे मैं इस कार्य को पूरा कर सकते हैं? कृपया ध्यान दें कि यह प्रमाणन प्रॉक्सी कि शीर्ष लेख है कि मैं बैकएंड सर्वर को भेजना चाहते हैं,

उत्तर

24

Woop, यह सोचा बाहर स्थापित किया है। सही nginx config इस तरह दिखता है:

location/{            
    auth_request  /_auth;        
    auth_request_set $user $upstream_http_x_user;  
    proxy_set_header x-user $user;     
    proxy_pass  http://backend_server;     
}               

मुद्दा यह है कि यदि आप किसी अन्य शीर्ष लेख में सीधे हैडर असाइन नहीं कर सकते, तो आप auth_request_set उपयोग करने के लिए एक चर में हैडर सेट और फिर एक के लिए है कि चर आवंटित करने के लिए है हैडर।

+0

धन्यवाद, अपने काम करता है –

+0

कैसे मैं $ उपयोगकर्ता कुकी से पारित कर सकते हैं? –

+1

@ShivKumar उस के लिए एक नया सवाल को खोलने के। – mjallday

संबंधित मुद्दे