2011-06-13 24 views
13

¡Configurado Nginx como proxy inverso frente a Play! y pasando https con los siguientes encabezados Set: -(https) Nginx -> (http) ¡Juega !. Pero request.secure es falso

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

login() [https://localhost/login] se está remitiendo a jugar! en el puerto 9000 como 'http'. Pero request.secure en login() sigue siendo 'falso'. Alguna idea ?

ACTUALIZACIÓN: aquí es la conf servidor: -

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

Muestra la configuración 'server {}' completa. –

Respuesta

7

la segunda entrada es incorrecta, debería ser:

proxy_set_header X-Forwarded-Ssl on; 

que va a resolver el problema

ACTUALIZACIÓN: sin poder probar, lo único que veo que falta es este encabezado:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

Además de eso, todo parece correcto.

+0

¡Gracias !, pero todavía no hubo suerte. –

+3

Cavó un poco en la clase play.mvc.Http.Request. Además de configurar el encabezado XFF, tuve que agregar, XForwardedSupport = en el archivo application.conf. Por ejemplo: en mi caso, XForwardedSupport = 127.0.0.1. Está funcionando ahora. –

+0

Nota: Play 2.5 parece ignorar los encabezados y solo verificar si request.uri comienza con 'https' para establecer el valor' request.secure' –

1

supongo que la solución sería cambiar:

en

"proxy_redirect  http://localhost https://localhost;" 

"localhost" siendo el valor para server.

3

Solo para aclarar las cosas. Me encontré con este problema y tuve un momento difícil para tener la solución de trabajo completa.

para hacer que funcione, su configuración debe nginx contiene:

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

El parámetro

proxy_set_header X-Forwarded-Proto https; 

es inútil (para este caso de uso).

Pero también es necesario tener esta especificado en su application.conf:

XForwardedSupport=<proxy server address> # generally, 127.0.0.1 

Esta respuesta es sólo un resumen de toda la conversación entre Pere Villegas y Aymer.

Cuestiones relacionadas