2011-06-13 15 views
13

प्ले के सामने रिवर्स प्रॉक्सी के रूप में Nginx को कॉन्फ़िगर किया गया है! और निम्नलिखित हेडर के साथ गुजर https सेट: -(https) Nginx -> (http) Play !. लेकिन request.secure झूठा

 proxy_set_header X-Forwarded-Proto https; 
     proxy_set_header X-Forwarded-Ssl https; 

login() [https://localhost/login] खेलने के लिए भेजा जा रहा है! पोर्ट 9000 पर 'http' के रूप में। लेकिन लॉगिन में अनुरोध। सुरक्षित() अभी भी 'झूठा' है। कोई उपाय ?

अद्यतन: यहाँ सर्वर conf है: -

server { 
    listen    443; 
    server_name   localhost; 

    ssl     on; 
    ssl_certificate  /home/aymer/play/key/localhost.crt; 
    ssl_certificate_key /home/aymer/play/key/localhost.key; 
    ssl_session_timeout 5m; 

    location ~ ^/(images|javascript|js|css|flash|media|static)/ { 
      root /home/aymer/play/playapp/public; 
      expires 30d; 
    } 

    location ~* (login|register)$ { 
      proxy_pass   http://localhost:9000; 
      proxy_redirect  off; 

      proxy_set_header Host    $host; 
      proxy_set_header X-Real-IP   $remote_addr; 
      proxy_set_header X-Forwarded-Proto https; 
      proxy_set_header X-Forwarded-Ssl on; 
     } 

    location/{ 
     rewrite ^/(.*) http://$host/$1 permanent; 
    } 
} 
+0

कृपया पूर्ण 'सर्वर {}' कॉन्फ़िगरेशन दिखाएं। –

उत्तर

7

दूसरी प्रविष्टि गलत है, यह होना चाहिए:

proxy_set_header X-Forwarded-Ssl on; 

कि इस मुद्दे का समाधान होगा

अद्यतन: बिना परीक्षण करने में सक्षम होने के कारण, मुझे याद रखने वाली एकमात्र चीज यह हैडर:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

इसके अलावा, सब कुछ सही लगता है।

+0

धन्यवाद !, लेकिन अभी भी कोई भाग्य नहीं है। –

+3

play.mvc.Http.Request क्लास के लिए थोड़ा सा खोला। XFF शीर्षलेख सेट करने के अलावा, मुझे application.conf फ़ाइल में XForwardedSupport = <प्रॉक्सी सर्वर पता> जोड़ना पड़ा। उदाहरण के लिए: मेरे मामले में, XForwardedSupport = 127.0.0.1। अब यह काम कर रहा है। –

+0

नोट: प्ले 2.5 हेडर को अनदेखा करता है और केवल यह जांचता है कि request.uri 'request.secure' मान सेट करने के लिए' https' से शुरू होता है या नहीं –

1

मुझे लगता है कि समाधान को बदलने के लिए होगा:

में
"proxy_redirect  http://localhost https://localhost;" 

"localhost" server_name के लिए मूल्य जा रहा है।

3

बस चीजों को स्पष्ट करने के लिए। मैं इस मुद्दे पर भाग गया और पूरा काम करने के समाधान के लिए थोड़ा कठिन समय था।

यह काम करने के लिए, अपने nginx विन्यास चाहिए शामिल हैं:

proxy_set_header X-Forwarded-Ssl on; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

पैरामीटर

proxy_set_header X-Forwarded-Proto https; 

बेकार है (उपयोग के इस मामले)।

लेकिन आप भी इस अपने application.conf में निर्दिष्ट करने की जरूरत है:

XForwardedSupport=<proxy server address> # generally, 127.0.0.1 

इस उत्तर सिर्फ पेरे Villega और Aymer के बीच पूरे बातचीत का एक संक्षिप्त है।

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